实现一个算法确定字符串中的字符是否均唯一出现
样例
给出"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; }
新闻热点
疑难解答