确定字符互异

来源:互联网 发布:中宏产业数据库 编辑:程序博客网 时间:2024/05/18 13:26

这是题目链接

暴力法

注意:题目要求不能用额外的空间
时间复杂度 = min( 257 , str.length())* min(257, str.length())

import java.util.*;public class Different {    public boolean checkDifferent(String iniString) {          if(iniString == null){            return true;        }        int len = iniString.length();        if(len == 0){            return true;        }        for(int i=0;i<len;i++){            for(int j=i+1;j<len;j++){                if(iniString.charAt(i) == iniString.charAt(j)){                    return false;                }            }        }        return true;    }}

排序的做法

    算法:我们先排序,然后再扫一遍排序后的字符串,查看是否有重复字符。时间复杂度O(nlogn) + n
package 确定字符互异;import java.util.*;public class Different {    public boolean checkDifferent(String iniString) {          if(iniString == null){            return true;        }        int len = iniString.length();        if(len == 0){            return true;        }        char[] str = iniString.toCharArray();        Arrays.sort(str);        for(int i=0;i<len-1;i++){            if(str[i] == str[i+1])            {                return false;            }        }        return true;    }    public static void main(String[] args){        System.out.println(new Different().checkDifferent("acbdesy"));    }}
0 0
原创粉丝点击