首页 > 学院 > 开发设计 > 正文

lintcode-简单-判断字符串是否没有重复字符

2019-11-08 18:52:50
字体:
来源:转载
供稿:网友

实现一个算法确定字符串中的字符是否均唯一出现

样例

给出"abc",返回 true

给出"aab",返回 false

思考:这里一般的做法是把字符串转换为字符数组,在数组里循环遍历数组,类似与排序算法一样去比较。如果找到相同的就跳出循环,return false;

如果没有return true;

对应AC代码:

public class Solution {    /**     * @param str: a string     * @return: a boolean     */    public boolean isUnique(String str) {        // write your code here        boolean flag=true;
//首先将字符串中的空格全部去除        char[] c=str.replaceAll(" ","").toCharArray();        for(int i=0;i<c.length;i++)        {            for(int j=i+1;j<c.length;j++)            {                if(c[i]==c[j])                {                    flag=false;                    break;                }            }        }        return flag;    }}但这开辟了额外空间,这里也可以不变成字符数组,直接根据string的长度循环。这个题的挑战也是要求不开辟别的空间,这里可以将代码简化为:

    public boolean isUnique(String str) {        // write your code here        // boolean flag=true;        // char[] c=str.replaceAll(" ","").toCharArray();        // for(int i=0;i<c.length;i++)        // {        //     for(int j=i+1;j<c.length;j++)        //     {        //         if(c[i]==c[j])        //         {        //             flag=false;        //             break;        //         }        //     }        // }        // return flag;                        //不开辟另外空间的做法        for (int i=0;i<str.length()-1;i++){            for (int j=i+1;j<str.length();j++){                if (str.charAt(i)==str.charAt(j)){                    return false;                }            }        }        return true;            }


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表