1.字符串中找最大串
交错01串(网易2017秋)
如果一个01串任意两个相邻位置的字符都是不一样的,我们就叫这个01串为交错01串。例如: "1","10101","0101010"都是交错01串。
小易现在有一个01串s,小易想找出一个最长的连续子串,并且这个子串是一个交错01串。小易需要你帮帮忙求出最长的这样的子串的长度是多少。
小易现在有一个01串s,小易想找出一个最长的连续子串,并且这个子串是一个交错01串。小易需要你帮帮忙求出最长的这样的子串的长度是多少。
import java.util.Scanner;
public class WangYi1 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
String s=sc.next();
int maxLen=maxLen(s);
System.out.println(maxLen);
}
}
public static int maxLen(String s){
int len=s.length();
int temLen=1;
int maxLen=1;
for(int i=0;i<len-1;i++){
if(Integer.parseInt(String.valueOf(s.charAt(i))) + Integer.parseInt(String.valueOf(s.charAt(i+1)))==1){
temLen++;
}else{
temLen=1;
}
maxLen=Math.max(maxLen, temLen);
}
return maxLen;
}
}
说明:本题不记录位置,用临时长度表示即可。一层循环两两比较,若符合临时长度加1,否则归为1.
2.输出字符串中最长的数字字符串和它的长度。如果有相同长度的串,则要一块儿输出,但是长度还是一串的长度
package niuke;
import java.util.ArrayList;
import java.util.Scanner;
public class ShuZiChuan {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
String s=sc.next();
String[] ss=s.split("\\D");
ArrayList<String> list = new ArrayList<String>();
int max=ss[0].length();
String ans=ss[0];
for(int i=0;i<ss.length;i++){
if(ss[i].length()>max){
max=ss[i].length();
ans=ss[i];
}else if(ss[i].length()==max){
ans=ans+" "+ss[i];
}
}
System.out.println("maxLen "+max);
System.out.println("maxLenString "+ans);
}
}
}
说明:\d表示数字,\D表示非数字。注意要转义\\D,用split分割。最后取出的是数字串的数组。