zoukankan      html  css  js  c++  java
  • Java的StringAPI的小练习

    //-------------String类--------------
    
    //求两个字符串的最大相同子串
    /*
    	思路:
    		1.找出较短的那个字符串
    		2.找出短串的所有子串,使用contains函数判断是否在长串中包含了这个子串
    			定义一个空字符串max,始终保存目前最大的子串
    		3.输出max
    */
    public class StringAPI {
    	public static void main(String args[]) {
    		String strA = "asdfitcastghjfghjk";
    		String strB = "xcitcastvbnm";
    		MaxStr max = new MaxStr(strA, strB);
    		String maxStr = max.getMaxStr();
    		System.out.println("最大子串:" + maxStr);
    	}
    }
    
    class MaxStr {
    	String longer;
    	String shorter;
    	
    	//检出长短字符串
    	MaxStr(String strA, String strB) {
    		if (strA.length() > strB.length()) {
    			this.longer = strA;
    			this.shorter = strB;
    		} else {
    			this.longer = strB;
    			this.shorter = strA;
    		}
    	}
    
    	//获得最大子串
    	/*
    		两层for循环就是为了找出shorter串的所有子串
    		 假设串为 1234
    		实例:  外层第一次循环	  1 2 3 4
    					  1 2 3
    					  1 2
    					  1
    			          -------
    		      外层第二次循环	    2 3 4
    					    2 3
    					    2
    					 -------
    		      外层第三次循环	      3 4
    					      3
    					 -------
    		     外层第四次循环	        4
    		
    	*/
    	public String getMaxStr() {
    		String max = "";
    		for (int i = 0; i < shorter.length(); i++) {
    			for (int j = shorter.length(); j >= i+1; j--) {
    				if (longer.contains(shorter.substring(i, j))) {
    					String temp = shorter.substring(i, j);
    					//System.out.println(temp);
    					if (temp.length() > max.length()) {
    						max = temp;//max始终存放目前已知的最大子串
    					}
    				}
    			}
    		}
    		return max;
    	}
    }
    
    //对字符串中的字符进行自然顺序排序
    //java中char类型占两个字节,byte类型占一个字节
    public class StringAPI {
    	public static void main(String args[]) {
    		String str = "iuhewshnbjiasfoinsaojawnpjlkegh";
    		String strNew = mySort(str);
    		System.out.println(strNew);
    		
    	}
    
    	private static String mySort(String str) {
    		char[] chs = str.toCharArray();//将字符串转化为char数组
    		Arrays.sort(chs);  //Arrays类实现数组的排序和搜索等
    		return new String(chs);//将数组以String对象的形式返回
    	}
    }
    
    //String的trim方法
    //1.使用trim方法,2.自己写一个方法模拟trim方法
    //trim方法返回一个去掉前后空格的字符串
    public class StringAPI {
    	public static void main(String args[]) {
    		String str = "poaeg";
    		String strNew = myTrim(str);
    		System.out.println("+" + strNew + "+");
    		System.out.println("-" + str.trim() + "-");
    	}
    	
    	//注意!!这个方法要保证在全为空格,没有空格,单端为空格和双端为空格的情况下都正确
    	private static String myTrim(String str) {
    		int start = 0;
    		int end = str.length()-1;
    		//这一步start下标最多移动到最后一个元素
    		while (start  < str.length()-1 && str.charAt(start) == ' ')
    			start++;
    		//这一步end下标最多移动到了start所指的元素的前一个元素
    		while (end >= start && str.charAt(end) == ' ')
    			end--;
    		return str.substring(start, end+1);
    	}
    	/*
    		解释:str.charAt(start) == ' '这一句是检测从前到后的第一个非空格字符的
    			而start  < str.length()-1这一句则是专门为全是空格的情况准备的
    			也就是说,即便全是空格,start至多指向最后一个空格,不会出现越界
    			
    			str.charAt(end) == ' '这一句是检测从后到前的第一个非空格字符的
    			而end >= start也是专为全为空格的情况设计的,即全为空格时,
    			end最多指到start之前的一个元素那里
    			
    			最终,正常情况不说了
    			全为空格的情况下,str.substring(start, end+1)返回的是一个空字符————"";
    	*/
    }
    
    
    //--------------基本类型包装类
    //基本类型包装类中都有字符串与数字互转的功能
    //还有最大最小值,按进制输出等等小功能
    
    //只有一个小细节:当Integer类自动包装的时候,
    //遇到Byte(-128~127)范围内的数的时候,直接公用,超出这个范围就不共用了
    public class StringAPI {
    	public static void main(String args[]) {
    		Integer i = 128;
    		Integer j = 128;
    		System.out.println(i == j);//false
    		
    		Integer p = 127;
    		Integer q = 127;
    		System.out.println(p == q);//true
    	}
    }
    
    //练习:
    
    //"23 9 -4 18 100 7"
    //要求这串数字按照从小到大排序并生成一个数值有序的字符串
    //思路:将每个数字依次提取出来到一个数组中去,排序后变成一个新字符串,最后输出出来
    //我自己写的方法
    public class StringAPI {
    	public static void main(String args[]) {
    		String numStr = "23 9 -4 18 100 7";
    		String newNumStr = mySort(numStr);
    		System.out.println("排序前:" + numStr);
    		System.out.println("排序后" + newNumStr);
    	}
    
    	private static String mySort(String numStr) {
    		int beginIndex = 0;
    		int floatIndex = 0;
    		int[] arr = new int[6];
    		
    		String temp = numStr.trim();
    		
    		{
    			int i = 0;
    			while (floatIndex < numStr.length())
    			{
    				if (numStr.charAt(floatIndex) == ' ')
    				{
    					arr[i++] = Integer.parseInt(numStr.substring(beginIndex, floatIndex).trim());
    					beginIndex = floatIndex;
    				}
    				floatIndex++;
    			}
    			arr[i] = Integer.parseInt(numStr.substring(beginIndex, numStr.length()).trim());
    		}
    		Arrays.sort(arr);
    		StringBuffer sb = new StringBuffer();
    		for (int i = 0; i < arr.length; i++)
    		{
    			sb.append(Integer.toString(arr[i])+" ");
    		}
    		return sb.toString();
    	}
    }
    
    //参考老师的方法
    public class StringAPI {
    	private static final String SPACE = " ";
    
    	public static void main(String args[]) {
    		String numStr = "5 3 4 8 6 2 1 7 9";
    		String newNumStr = mySort(numStr);
    		System.out.println("排序前:" + numStr);
    		System.out.println("排序后:" + newNumStr);
    	}
    
    	private static String mySort(String numStr) {
    		//以空格为分界切割整个字符串成为几个小字符串
    		String[] strArrs = numStr.split(SPACE);
    		//获得被转化成了的int数组
    		int[] numArr = getNumArr(strArrs);
    		Arrays.sort(numArr);
    		//将数组中的数字拼接成一个字符串
    		return toString(numArr);
    	}
    	
    	//将int型数组中的数字拼接成一个字符串
    	private static String toString(int[] numArr) {
    		StringBuilder sb = new StringBuilder();
    		for (int i = 0; i < numArr.length; i++)
    		{
    			if (i != numArr.length-1)
    				sb.append(Integer.toString(numArr[i]) + " ");
    			else 
    				sb.append(Integer.toString(numArr[i]));
    		}
    		return sb.toString();
    	}
    	//将字符串数组的值全部转化为数字存到int型数组中去
    	private static int[] getNumArr(String[] strArrs) {
    		int[] arr = new int[strArrs.length];
    		for (int i = 0; i < strArrs.length; i++)
    		{
    			arr[i] = Integer.parseInt(strArrs[i]);
    		}
    		return arr;
    	}
    	
    }
    
  • 相关阅读:
    static-keys.txt 翻译
    sqlserver sp_executesql 返回值
    socket上传文件
    threadingSocket 服务器端可以同时接受多个客户端的访问
    python ftp上传
    Python sys模块
    linux系统相关
    下载论文,电子书籍(中英文),专利,数据库和课件
    如何设计一个合理、灵活的深度学习训练框架
    使用小米电视的第一天
  • 原文地址:https://www.cnblogs.com/qianbixin/p/6040676.html
Copyright © 2011-2022 走看看