黑马程序员_>

时间:2021-11-11 11:52:12

--------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! --------------------


1. 去除空格

     

     模拟取出字符串两边的空格


  思路:

 1.判断字符串第一个字符是不是空格,如果是则继续向后判断,直到不是空格,然后记下此标记

 2.逆向判断字符串,也是直到判断不是空格,记下下标

 3,然后截取字符串即可



public class ThrowSpace {

public static void main(String[] args) {
System.out.print("--");
String str = " abcdef ";
System.out.print(method(str));
System.out.print("--");

}

public static String method(String str) {
char[] cs = str.toCharArray();
int x = 0, y = cs.length - 1;
for (; x < cs.length; x++) {
if (str.charAt(x) != ' ') {
break;
}
}
for (; y >= 0; y--) {
if (str.charAt(y) != ' ') {
break;
}
}
return str.substring(x , y + 1);
}

}
结果:
--abcdef--


2.     反转

 

 

       模拟反转字符串


  思路:

 1.将字符串转换成字节数组

 2.然后利用数组的反转功能,对数组反转

 3.然后将反转后的字符数组转成成字符串,返回即可。

 4.要是范围反转,你们就先取出那些要反转的,然后反转后,那么就在加上不反转的部分



public class ReverseString {
public static void main(String[] args) {
String str="abcdef";
System.out.println(reverseString(str));
String str1="123456789";
System.out.println(reverseString(str1,3,7));

}
/*完全反转*/
public static String reverseString(String str){
char [] chs=str.toCharArray();
reverse(chs);
return new String(chs);
}
/*指定范围反转*/
public static String reverseString(String str,int start,int end){

char [] chs=str.toCharArray();
String s1=new String(chs,0,start);
String s2=new String(chs,end,chs.length-end);
String s3=new String(chs,start,end-start);
char [] newch=s3.toCharArray();
reverse(newch);
return s1+new String(newch)+s2;
}
/*反转数组*/
public static void reverse(char [] cs){
for(int start=0,end=cs.length-1;start<=end;start++,end--){
swap(cs,start,end);
}
}
/*交换数组中两个字符位置*/
public static void swap(char [] cs,int start,int end){
char temp=cs[start];
cs[start]=cs[end];
cs[end]=temp;
}

}

结果:
fedcba
123765489

 

3. 计数

   

    

计算字符串中指定字符的个数


    思路:

    1.将字符串转换成数组

     2.定义一个计数器,然后再循环查找数组的元素,每查找到一个,那么计数器增加1

    3.将计算器返回即可




 public class CountString {
public static void main(String[]args) {
Stringstr="abcdjasbabsdaeas";
System.out.println("str中有"+count(str,'a')+"个字符"+'a');

}
/*开始查找计数*/
public static int count(Stringstr,char c){
char [] cs=str.toCharArray();
int count=0;
for(char cc:cs){
if(cc==c)
count++;
}
return count;
}

}
结果:
str中有5个字符a


 

 

4.获取字串

   

  

   获取两个字符串中最大相同子串(按照长度比较)


  思路:

    1.将短的字符串按照长度递减的方式获取到,

    2.将获取到得子串去长串中判断是否包含

     3.如果包含则找到。


黑马程序员_>

public class getMaxString {
public static void main(String[] args) {
String s1="acbdgyangsdds";
String s2="dayangqxdw";
System.out.println(getMaxSUbString(s1,s2));
}
/*获取最大相同字符串*/
public static String getMaxSUbString(String s1,String s2){
if(s2.length()>s1.length()){
String temp=s1;
s1=s2;
s2=temp;
}
for(int x=0;x<s2.length();x++){
for(int y=0,z=s2.length()-x;z!=s2.length()+1;y++,z++){
String temp=s2.substring(y,z);
if(s1.contains(temp)){
return temp;
}
}
}
return "";
}

}
结果:
yang


 --------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! --------------------