问题描述
1.不能全是相同的数字或者字母(如:000000、111111、222222、333333等等)2.不能是连续数字(如:123456、12345678、87654321等等)
解决方案
//顺序表 static String orderStr = ""; static { for (int i = 33; i < 127; i++) { orderStr += Character.toChars(i)[0]; } } //判断是否有顺序 public static boolean isOrder(String str) { if (!str.matches("((\d)|([a-z])|([A-Z]))+")) { return false; } return orderStr.contains(str); } //判断是否相同 public static boolean isSame(String str) { String regex = str.substring(0, 1) + "{" + str.length() + "}"; return str.matches(regex); }
解决方案二:
1.不能全是相同的数字或者字母 正则倒是好处理:boolean unmatch = !"wwwww".matches("(\w)(\1)+");第2点正则不好处理
解决方案三:
稍微写了下 有点粗糙import java.util.ArrayList;import java.util.Collections;import java.util.List;import org.apache.commons.lang3.StringUtils;public class demo {/** * 判断是否是由同一字符构成的,true代表由同一字符构成的 false反之 */ public static boolean isSameSymbol(String s){ boolean flag=false; //当s为空字符串或者null,认为不是由同一字符构成的 if(StringUtils.isEmpty(s)){ return flag; } //当只有一个字符的时候,认为由同一字符构成 if(1==s.length()){ flag=true; return flag; } char chacter=s.charAt(0); for(int i=1;i<=s.length()-1;i++){ if(chacter!=s.charAt(i)){ flag=false; return flag; } } flag=true; return flag; } /** * 判断是否有顺序 true代表有顺序 false反之 */ public static boolean isOrdered(String s){ boolean flag=false; //当s为空字符串或者null,认为不是由同一字符构成的 if(StringUtils.isEmpty(s)){ return flag; } //当只有一个字符的时候,认为由同一字符构成 if(1==s.length()){ flag=true; return flag; } List<Integer> temp1= new ArrayList<Integer>(); List<Integer> temp2= new ArrayList<Integer>(); for(int i=0;i<s.length();i++){ temp1.add(Integer.valueOf(s.substring(i,i+1))); } for(int i=0;i<s.length();i++){ temp2.add(Integer.valueOf(s.substring(i,i+1))); } Collections.sort(temp1); StringBuffer orderedAsc=new StringBuffer(); for(Integer i:temp1){ orderedAsc.append(i); } Collections.sort(temp2); Collections.reverse(temp2); StringBuffer orderedDec=new StringBuffer(); for(Integer i:temp2){ orderedDec.append(i); } if(s.equals(orderedDec.substring(0))||s.equals(orderedAsc.substring(0))){ flag=true; return flag; } return flag; } public static void main(String[] args) {System.out.println(isSameSymbol("ssss"));System.out.println(isSameSymbol("saaa"));System.out.println(isOrdered("12345"));System.out.println(isOrdered("54321"));System.out.println(isOrdered("54451"));}}