关闭

160.Find the Difference

93人阅读 评论(0) 收藏 举报
分类:

Given two strings s and t which consist of only lowercase letters.

String t is generated by random shuffling string s and then add one more letter at a random position.

Find the letter that was added in t.

Example:

Input:
s = "abcd"
t = "abcde"

Output:
e

Explanation:
'e' is the letter that was added.

Subscribe to see which companies asked this question

/*因为都是小写字母,所以可以定义一个只包含26个字母的数组,Count[i]表示'a'+i字符在字符串t中出现的次数。
    * Step1:遍历字符串s,统计各个字符出现的次数;
    * Step2:遍历字符串t,减去各个字符出现的次数;
    * Step3:统计数组,值为1的那个下标对应的字符即为最后的结果。
    * 注意:题目中说了只有t只比s一个字符而且s和t中都是小写字母。
    * 改进:前两步可以合并。
    */
    public char findTheDifference(String s, String t) {
        int count[] = new int[26];
        int sLen = s.length();
        int tLen = sLen+1;//题目中说了t比s多一个字符
        for(int i=0;i<sLen;i++ ){
            count[s.charAt(i)-'a']++;
            count[t.charAt(i)-'a']--;
        }
        count[t.charAt(sLen)-'a']--;
        
         for(int i=0;i<26;i++ ){
             if(count[i] == -1){
                 return (char)(i+'a');
             }
         }
         
         return 'a';//因为在第二个for循环中可以确定要返回的最后结果,所以这个地方永远走不到。
    }


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:76161次
    • 积分:3189
    • 等级:
    • 排名:第11452名
    • 原创:245篇
    • 转载:48篇
    • 译文:0篇
    • 评论:4条
    最新评论