字符串练习题

package cn.itcast.p1.string.demo;


import java.util.Arrays;


/*
 * 1.给定字符串数组,按照字典顺序进行从到小排序
 * 
 * 思路:
 * 1排序,选择或者冒泡
 * 2、for嵌套、比较、换位
 * 3.字符串对象比较功能。
 * 
 * 2、特定子字符串在字符串中出现次数
 *  思路:
 *  1、用indexOf()获取子字符串首次出现位置。
 *  2、记录字符串首次出现位置,再在剩余子串中查找,剩余子串的首地址为出现位置+子串长度。
 *  3,以此类推,知道找不到子串返回-1,并且每次查找到子串用计数器记录
 *  
 *  
 *  3 两个字符串中最大相同的子串
 *    思路:
 *  1、短的字符串是否在长的字符串中,如果存在,则短的就是最大相同子串
 *  2、否则,短的字符串长度递减,再去长字符串中查找
 *  
 *  4 模拟一个trim功能一致的方法(去除字符串两端空白)
 *    思路:
 *    1、定义连个变量,
 *    一变量从头判断字符串空格的角标,不断++
 *    一变量从尾判断字符串空格的角标,不断--
 *    2判断到不是空格为止,取头尾之间的字符串即可
 *    
 *    5 对一个字符串中的数值进行从大到小的排序
 *    “12 4 67 8 15 23 36”
 *    思路:
 *    1、排序(冒泡、选择、快速),但只能针对int
 *    2、运用分割符大串变小串
 *    3、字符串-->基本类型,使用基本类型包装类
 *  
 */


public class StringTest {

private static final String  SPACE_SEPARATOR=" ";


public static void main(String[] args) {
// TODO Auto-generated method stub
String[] arr={"nba","abc","cba","zz","th"};
///printArray(arr);
//sortString(arr);
//printArray(arr);


String str="eabuiuabdieabfg";
String key="ab";
int count=getKeyStringCount(str,key);
System.out.println("count="+count);
//int count=getKeyStringCount_2(str,key);
//System.out.println("count_2="+count);
 
String s1="dawuhufaobvgfrteh";
String s2="kwuhuftrbvf";
String s=getMaxSubstring(s1,s2);
System.out.println("s="+s);
 
String s3="   ab s   ";
s3=mystrim(s3);
System.out.println("s3="+s3);
String numStr="12 4 67 8 15 23 36";
numStr=sortStringNumber(numStr);
System.out.println("排序后的numStr="+numStr);
}
/*
* 1、字符串变字符串数组
* 2、字符串数组变int数组
* 3、int数组排序
* 4、排序后的int数组变成字符串

*/
public static String sortStringNumber(String numStr) {
// TODO Auto-generated method stub
String[] str_arr=stringToArray(numStr);
int[] num_arr=toIntArray(str_arr);
mySortArray(num_arr);
String strTemp=arrayToString(num_arr);
return strTemp;
}
public static String arrayToString(int[] num_arr) {
// TODO Auto-generated method stub
StringBuilder sb=new StringBuilder();
for(int x=0;x<num_arr.length;x++){
if(x!=num_arr.length-1)
sb.append(num_arr[x]+SPACE_SEPARATOR);
else
sb.append(num_arr[x]);

}
return sb.toString();
}
public static void mySortArray(int[] num_arr) {
// TODO Auto-generated method stub
Arrays.sort(num_arr);

}
public static int[] toIntArray(String[] str_arr) {
// TODO Auto-generated method stub
int[] arr=new int[str_arr.length];
for(int i=0;i<str_arr.length;i++){
arr[i]=Integer.parseInt(str_arr[i]);
}
return arr;
}
/*
* @param numStr 
*/
public static String[] stringToArray(String numStr) {
// TODO Auto-generated method stub
String[] str_arr=numStr.split(SPACE_SEPARATOR);
return str_arr;
}
/*
* 去除字符串两端空白
*  @param s
     * @return
*/
 public static String mystrim(String s) {
// TODO Auto-generated method stub
int start=0,end=s.length()-1;
    while(s.charAt(start)==' '&&start<end){
    start++;
    }
    while(s.charAt(end)==' '&&start<end){
    end--;
    }
return s.substring(start,end+1);
}
/*
 * 两个字符串中最大相同的子串
 * @param s1
 * @param s2
 * @return
 * 
 */
public static String getMaxSubstring(String s1, String s2) {
// TODO Auto-generated method stub
String max=null,min=null;
max=(s1.length()>s1.length())?s1:s2;
min=max.equals(s1)?s2:s1;
for(int i=0;i<min.length();i++){
for(int a=0,b=min.length()-i;b!=min.length()+1;a++,b++){
String sub=min.substring(a,b);
if(max.contains(sub))
return sub;
}
}
return null;
}
/*
 * 获取子串在整串中出现的次数
 * @param str 字符串
 * @param key 查找的子串
 * @return count 返回子串出现的次数
 */
public static int getKeyStringCount(String str, String key) {
// TODO Auto-generated method stub
//定义计数器
int count=0;
//定义变量记录key出现位置
int index=0;
while((index=str.indexOf(key))!=-1){
 
str=str.substring(index+key.length());
count++;
      }

return count;
}
public static int getKeyStringCount_2(String str, String key) {
// TODO Auto-generated method stub
//定义计数器
int count=0;
//定义变量记录key出现位置
int index=0;
while((index=str.indexOf(key,index))!=-1){
 
index=index+key.length();
count++;
      }

return count;
}
/*
* 字符串数组排序
* @param arr 需要排序烦的字符串数组
*/
public static void sortString(String[] arr) {
// TODO Auto-generated method stub

for(int i=0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length-1-i;j++){
if(arr[i].compareTo(arr[j])>0)//字符串对象比较方法compareTo
swap(arr,i,j);

}
}

}


public static void swap(String[] arr, int i, int j) {
// TODO Auto-generated method stub
String temp;
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;

}


public static void printArray(String[] arr) {
// TODO Auto-generated method stub
System.out.println("[");
for(int i=0;i<arr.length;i++){
if(i!=arr.length-1)
System.out.println(arr[i]+",");
else
System.out.println(arr[i]+"]");
}

}


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值