您的位置:首页 > 其它

字符串练习题

2015-07-28 17:27 288 查看
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]+"]");

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: