判断字符串是否没有重复字符

题目

实现一个算法确定字符串中的字符是否均唯一出现。http://www.lintcode.com/zh-cn/problem/unique-characters/

分析

这道题目很简单,借助map作为计数器就搞定了。挑战里面有一个,不使用额外的存储空间。这个也不难,两重for循环对比也能搞定。

代码


public class Solution {
    /*
     * @param str: A string
     * @return: a boolean
     */
    public boolean isUnique(String str) {
        // write your code here
        for(int i=0; i < str.length(); i++){
            for(int j=i+1; j < str.length(); j++){
                if(str.charAt(i) != str.charAt(j) ) continue;
                return false;
            }
        }
        return true;
    }
}

延伸讨论——正则表达式中的反向引用

如果是实际项目中遇到类似的需求,肯定是使用正则表达式更加方便。如果是js代码要做这道题,只要一行代码即可。


var isUnique = function (str) {
    return /(.).*\1+/.test(str);
};

这里用到了一个正则表达式的反向引用机制,所谓的反向引用,就是在正则表达式中引用捕获到的分组。通过\1,\2...就可以表示对应的捕获分组,只要被捕获的字符,在随后的字符串中出现了至少1次,就说明存在重复的字符。

Show Comments

Get the latest posts delivered right to your inbox.