码迷,mamicode.com
首页 > 其他好文 > 详细

11/2 上午

时间:2019-11-02 13:48:11      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:bool   boolean   const   第一个   ret   nbsp   ==   字符串   string   

387. First Unique Character in a String

用一个freq表建立每个字符和其出现次数的映射,然后按顺序遍历字符串,找到第一个出现次数为1的字符,返回其位置即可,参见代码如下:

注意

1. freq[s.charAt(i) - ‘a‘] == 1
2. freq数组用256覆盖所有字符
class Solution {
    public int firstUniqChar(String s) {
        int[] freq = new int[256];
        for(int i = 0; i < s.length(); i++){
            freq[s.charAt(i) - ‘a‘]++;
        }
        for(int i = 0; i < s.length(); i++){
            if( freq[s.charAt(i) - ‘a‘] == 1)
                return i;
        }
        return -1;
    }
}

383. Ransom Note

同理,用freq表记录magazine的每一个字符在对应索引位置上的数。

第二次遍历用ransomNote遍历此表,如果对应位置上的值小于0,则表示不满足。

class Solution {
    public boolean canConstruct(String ransomNote, String magazine) {
        int[] freq = new int[26];
        for( int i = 0; i < magazine.length(); i++){
            freq[magazine.charAt(i) - ‘a‘]++;
        }
        for( int i = 0; i < ransomNote.length(); i++){
            if( --freq[ransomNote.charAt(i) - ‘a‘] < 0 )
                return false;
        }
        return true;
    }
}

 

11/2 上午

标签:bool   boolean   const   第一个   ret   nbsp   ==   字符串   string   

原文地址:https://www.cnblogs.com/Afei-1123/p/11781255.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!