首页 > 代码库 > 17.在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
17.在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
转载请注明出处:http://www.cnblogs.com/wuzetiandaren/p/4261992.html
声明:现大部分文章为寻找问题时在网上相互转载,此博是为自己做个记录记录,方便自己也方便有类似问题的朋友,本文的思想也许有所借鉴,但源码均为本人实现,如有侵权,请发邮件表明文章和原出处地址,我一定在文章中注明。谢谢。
题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b 。
题目分析:
求字符串的某个字符出现的次数可以很巧妙的运用split("字符") 方法将原字符串分割为字符串数组,再判断这个字符串数组的长度来实现,若长度等于2,则该字符就刚好出现一次。
值得注意的是:该字符出现m次,split("字符")方法的结果,若当该字符出现在字符串开头或中间时,如gaaafffvvvttt,aaaffgfvvvttt你得到的长度是m+1;当该字符出现在字符串末尾时,以该字符split字符串如aaafffvvvtttg,你得到的长度是m,因此要将原字符串进的尾部行一些处理。
我的处理方式是:先的到原字符串的长度n,再在字符串的末尾加上一个非空字符(这样才能处理最后一个字符本身就为空的情况),而遍历的时候仍然是[0,n-1],不遍历这后来添加的字符。
java实现源码:
1 package com.interview; 2 3 import java.util.Scanner; 4 5 /** 6 * 题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。 7 * @author wjh 8 * 9 */10 public class _17FirstChar {11 12 /**13 * @param args14 */15 public static void main(String[] args) {16 _17FirstChar invoker= new _17FirstChar();17 Scanner scan = new Scanner(System.in);18 while(true){19 System.out.println("请输入一个字符串:");20 String str= scan.nextLine();21 if(str.equals("退出")){22 System.exit(0);23 }24 invoker.findCharacter(str);25 }26 }27 28 //在一个字符串中找到第一个只出现一次的字符29 private void findCharacter(String str){30 if(str==null || str.equals("")){31 System.out.println("输入的字符串为空!");32 return;33 }34 int n = str.length();35 //对字符串的末尾进行处理,否则当最后一个为空格时或某一个字符第36 //一次出现在末尾时无法正确处理37 String str1 = str+"a"; //这里添加一个除了空格之外的任意字符38 for(int i=0;i<n;i++){39 char temp = str1.charAt(i);40 String[] ss=str1.split(""+temp); //以第i个字符将字符串分割成字符数组41 int length = ss.length;42 if(length==2){43 if(temp==‘ ‘){44 System.out.println("字符串"+str+"里第一个只出现一次的字符为:空格\n");45 }46 else47 System.out.println("字符串"+str+"里第一个只出现一次的字符为:"+temp+"\n");48 return;49 }50 }51 System.out.println("没有找到这样的字符!");52 }53 }
运行结果:
请输入一个字符串:
atghtghjyuuy
字符串atghtghjyuuy里第一个只出现一次的字符为:a
请输入一个字符串:
tghttaghjyuuy
字符串tghttaghjyuuy里第一个只出现一次的字符为:a
请输入一个字符串:
tghttghjyuuya
字符串tghttghjyuuya里第一个只出现一次的字符为:j
请输入一个字符串:
tghttghayuuyaj
字符串tghttghayuuyaj里第一个只出现一次的字符为:j
请输入一个字符串:
eeerrryuyddt
字符串 eeerrryuyddt里第一个只出现一次的字符为:空格
请输入一个字符串:
eeerrryuyutddt
没有找到这样的字符!
17.在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b