字符串练习题
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]+"]");
}
}
}
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]+"]");
}
}
}
相关文章推荐
- iOS 应用程序的生命周期详解
- 当使用malloc提示找不到标识符时?
- 设置SVN忽略文件和目录(文件夹)
- 信息化项目与工程项目的区别一点感悟
- [thinkphp] 隐藏后台地址
- 图解mysql join
- OpenCV库highgui函数在VS2012下的内存泄露问题!
- python使用win32com的心得
- java 微信支付随机字符串生成方法
- java 微信支付签名生成方法
- 剑指Offer面试题8(java版):旋转数组的最小数字
- 大型网站架构之系列——死了都要说的缓存&分布式中的异步通信
- 树结构练习——排序二叉树的中序遍历 SDUT
- 字符串类常见方法
- 朝花夕拾——你了解构造器初始化顺序吗?
- Erlang lists 系列函数功能与用法详解
- python 之queue
- HDOJ S-Nim 1536&POJ S-Nim 2960【求SG函数+Nim游戏】
- 简单研究Android View绘制二 LayoutParams
- The Independent JPEG Group's JPEG software Android源码中 JPEG的ReadMe文件