php判断字符串是否重复-PHP问题

资源魔 36 0

PHP判别字符串能否有反复字符:

办法1、

一、将字符串转成字符数组

二、应用Arrays.sort(char[])对字符数组进行排序,而后,一一遍历整个排序后的数组,假如没有是最初一个字符,而且假如以后字符以及厥后面的字符相反,那末就间接前往false,不然持续遍历,假如一切的元素以及厥后面都没有相反或许曾经遍历到最初一个字符了,就以为是不反复字符,即前往true

三、另外,关于null或许长度是0的字符串,不反复字符,前往true

办法2、

创立哈希表,遍历字符串,假如哈希表中没有蕴含该字符,就增加出来,假如蕴含,就前往false,假如不反复的字符,那末最初前往true。

办法3、

上述两种办法均需求额定开拓空间,假如想没有开拓空间,那末能够借助String.indexOf(char ch, int fromIndex),遍历字符串中的字符,遍历到倒数第二个字符便可。对每一个字符,判别厥后能否有反复的字符便可,假如有就前往false,假如不反复的字符,那末前往true。

完成代码:

public class Solution {
    /*
     * @param str: A string
     * @return: a boolean
     */
    public boolean isUnique(String str) {
        // write your code here
        /*
        //思绪一
        //假如str是null,那末抛出异样
        if(str == null){
            throw new IllegalArgumentException("invalid parameters");
        }
        
        //假如str的长度是0或许1,那末不反复字符,前往true
        if(str.length() == 0 || str.length() == 1){
            return true;
        }
        
        //将字符串转成字符数组
        char[] ch = str.toCharArray();
        
        //对数组进行排序
        Arrays.sort(ch);
        
        //遍历数组,看以后字符能否以及前面字符相反,相反就前往false,不然前往true
        for(int i = 0; i < ch.length-1; i++){
            if(ch[i] == ch[i+1]){
                return false;
            }
        }
        
        return true;
        */
        
        /*
        //思绪二
        //假如str是null,那末抛出异样
        if(str == null){
            throw new IllegalArgumentException("invalid parameters");
        }
        //假如str的长度是0或许1,那末不反复字符,前往true
        if(str.length() == 0 || str.length() == 1){
            return true;
        }
        
        //创立hash表,将字符串字符存到hash表中
        HashSet<Character> hs = new HashSet<Character>();
        
        for(int i = 0; i < str.length(); i++){
            if(hs.contains(str.charAt(i))){
                return false;//hash表中有相反的字符,那末阐明有反复的字符
            }
            
            hs.add(str.charAt(i));
        }
        
        return true;
        */
        
        //思绪三
        //假如str是null,那末抛出异样
        if(str == null){
            throw new IllegalArgumentException("invalid parameters");
        }
        //假如str的长度是0或许1,那末不反复字符,前往true
        if(str.length() == 0 || str.length() == 1){
            return true;
        }
        
        //畴前向后遍历字符串,对每一个字符,挪用String.indexOf()看厥后面能否有相反的字符,假如有前往false,不然最初前往true
        for(int i = 0; i < str.length()-1; i++){
            if(str.indexOf(str.charAt(i), i+1) != -1){
                return false;
            }
        }
        
        return true;
 
    }
}

保举:php效劳器

以上就是php判别字符串能否反复的具体内容,更多请存眷资源魔其它相干文章!

标签: php php教程 字符串 php故障解决 php使用问题

抱歉,评论功能暂时关闭!