
PHP推断字符串是不是有反复字符:
要领一、
1、将字符串转成字符数组
2、运用Arrays.sort(char[])对字符数组举行排序,然后,逐一遍历全部排序后的数组,假如不是末了一个字符,而且假如当前字符和厥背面的字符雷同,那末就直接返回false,不然继承遍历,假如一切的元素和厥背面都不雷同或许已遍历到末了一个字符了,就认为是没有反复字符,即返回true
3、别的,关于null或许长度是0的字符串,没有反复字符,返回true
要领二、
建立哈希表,遍历字符串,假如哈希表中不包括该字符,就增加进去,假如包括,就返回false,假如没有反复的字符,那末末了返回true。
要领三、
上述两种要领均须要分外拓荒空间,假如想不拓荒空间,那末能够借助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推断字符串是不是反复的细致内容,更多请关注ki4网别的相干文章!