package string;
class AdverArray{
public static char[] adv(char[] arr,int start,int end){
char[] ch=new char[arr.length];
for(int i=0;i<start;i++){
ch[i]=arr[i];
}
for(int i=0;i<=end-start;i++){
ch[start+i]=arr[end-i];
}
for(int i=end+1;i<arr.length;i++){
ch[i]=arr[i];
}
return ch;
}}
class ArrayLength{
public static String maxL(String str1,String str2){
if(str1.length()>str2.length())
return str1;
else
return str2;
}
public static String minL(String str1,String str2){
if(str1.length()<str2.length())
return str1;
else
return str2;
}
}
class String_Simulation{
public static String trimSim(String s){//模拟trim去除两端空格
int start,end,num=0;
while(num<s.length()){
if((s.charAt(num)!=' '))
{
break;
}
num++;
}
Sop.print(num);
start=num;
num=s.length()-1;
while(num>=0){
if((s.charAt(num)!=' '))
{
break;
}
num--;
}
Sop.print(num);
end=num;
return s.substring(start, end+1);
}
public static void adverseString(String s,int start,int end){//反转指定字符串,end-start这段反转
char[] ch=s.toCharArray();
char[] ch2=AdverArray.adv(ch, start-1, end-1);
String s1=new String(ch2);
Sop.print(s1);
}
public static int counting(String str,String tar){//对指定序列计数
int num=0,pos=0;
while(pos<str.length()&&str.indexOf(tar, pos)!=-1){
pos=str.indexOf(tar, pos)+tar.length();
num++;
}
return num;
}
public static String maxSimilar(String str1,String str2){
//找出两者最大公子序列:首先对短的分解,短的字符串的某个子列如果在str1中能找到匹配,其中最长的那个就是目标;
//
int mark=0,start=0,end=0;
int t1l=str1.length();
int t2l=str2.length();
for(int i=t2l;i>0&&mark!=1;i--)
for(int k=0;k+i<=t2l&&mark!=1;k++){
if(str1.contains(str2.substring(k,k+i)))//if(str1.indexOf(str2.substring(k,k+i))!=-1)也行
//子列的end是不包含在内的;所以在找子列的时候可以让end超出长度,end的最大值是(length-1)+1
{
start=k;
end=k+i;
mark=1;
}
}
if(mark==1)
return str2.substring(start,end);
else
return "";
}
}
public class StringPractise {
public static void main(String[] args) {
String s=" showmethemoney ";
String str1="showmethemoneybivalabidangjasdo";
String str2="21234bivalabida3diauqpweqwieopiqwihoqiweuqw452";
String_Simulation ss=new String_Simulation();
System.out.println(str1.startsWith("show"));
Sop.print(String_Simulation.trimSim(s));
Sop.print(s);
ss.adverseString(s, 3, 5);
Sop.print("2"+"序列出现次数"+ss.counting(str2, "2"));
String pub=ss.maxSimilar(ArrayLength.maxL(str1, str2),ArrayLength.minL(str1, str2));
if(pub.isEmpty())
System.out.println("无此序列");
else
Sop.print(pub);
}
}
字符小练习
最新推荐文章于 2024-05-08 15:42:08 发布