//-------------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;
} }

Java的StringAPI的小练习的更多相关文章

  1. Java 打印金字塔 or 打印带数字的金字塔 (Java 学习中的小记录)

    Java 打印金字塔 or 打印带数字的金字塔 (Java 学习中的小记录) 作者:王可利(Star·星星) 效果图: 代码如下: class Star8 { public static void m ...

  2. Java 需要记得、了解的关键词 (Java 学习中的小记录)

    Java 需要记得.了解的关键词 (Java 学习中的小记录)     作者:王可利(Star·星星) 总结:本次随笔,仅且拿来平时翻阅记忆用

  3. java 开发面试题小整理(一)

    本篇文档将持续更新,有基础滴,也有深层次的,谢谢! 1.看下面的程序是否有问题,如果有问题,请指出并说明理由. * byte b1 = 3; * byte b2 = 4; * byte b3 = b1 ...

  4. java网络爬虫爬虫小栗子

    简要介绍: 使用java开发的爬虫小栗子,存储到由zookeeper协调的hbase中 主要过程是模拟Post请求和get请求,html解析,hbase存储 源码:https://github.com ...

  5. IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题

    IT咨询顾问:一次吐血的项目救火   年后的一个合作公司上线了一个子业务系统,对接公司内部的单点系统.我收到该公司的技术咨询:项目启动后没有规律的突然无法登录了,重新启动后,登录一断时间后又无法重新登 ...

  6. java实现简单窗体小游戏----球球大作战

    java实现简单窗体小游戏----球球大作战需求分析1.分析小球的属性: ​ 坐标.大小.颜色.方向.速度 2.抽象类:Ball ​ 设计类:BallMain—创建窗体 ​ BallJPanel—画小 ...

  7. Java之——实现微信小程序加密数据解密算法

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/79450115 一.概述 微信推出了小程序,很多公司的客户端应用不仅具有了APP.H ...

  8. Java集合,扑克牌的小项目练习

    Java集合,扑克牌的小项目练习 2小时学完了类与集合,一直二倍加跳过,集合和类的学习我觉得得多实践中去记住,光靠背,永远也背不完,学的时候记一下常用的,特殊的就行了,用的时候再查,多写代码才能会,哈 ...

  9. 用Java编写的猜拳小游戏

    学习目标: 熟练掌握各种循环语句 例题: 代码如下: // 综合案例分析,猜拳案例 // isContinue为是否开始游戏时你所输入的值 char isContinue; //y为开始,n为借宿 S ...

随机推荐

  1. hadoop Datanode Uuid unassigned

    在配置hadoop的hdfs的时候,要首先格式化,然后才能启动,但是格式化的方式有的是不对出现Initialization failed for Block pool <registering& ...

  2. 随机生成30道四则运算-NEW

    补充:紧跟上一个随机生成30道四则运算的题目,做了一点补充,可以有真分数之间的运算,于是需要在原来的基础上做一些改进. 首先指出上一个程序中的几个不足:1.每次执行的结果都一样,所以不能每天给孩子出3 ...

  3. 软工实践第八次作业(课堂实战)- 项目UML设计(第五组)

    本次作业博客 团队信息 队名:起床一起肝活队 原组长: 白晨曦(101) 原组员: 李麒 (123) 陈德斌(104) 何裕捷(214) 黄培鑫(217) 王焕仁(233) 林志华(128) 乐忠豪( ...

  4. Android工程方法数超过64k,The number of method references in a .dex file cannot exceed 64K.

    最近将一个老的Eclipse项目转到Android Studio后,用gradle添加了几个依赖,项目可以make,但是一旦run就报错 Error:The number of method refe ...

  5. 求最大子串和以及其中一个子串(java)

    public static void getMaxSum(int[] a){ int max = a[0]; int sum = a[0]; int temp = 0; int start = 0; ...

  6. 对scrum站立会议的理解

    个人理解:首先我不明白scrum的含义,查了一下,scrum是迭代式增量软件开发过程,通常用于敏捷开发.scrum包括了一系列实践和预定义角色的过程骨架.scrum中的主要角色包括同项目经理类似的sc ...

  7. 【Linux】- 六个超赞的字符画生成器

    ASCII是一个非常吸引人的字符编码系统,在计算机,通讯设备,以及其他设备中,通过它来用代码表示字符.新生代的人可能会觉得它已经过时了,但是那些熟悉它的人会懂得ASCII是多么的独特.我们在这里为你准 ...

  8. 利用C#进行文件读写的方法选择总结

    小的文本文件(100M以下)直接用File类的ReadAllText()和WriteAllText()方法 这两个方法内部其实就是封装了StreamReader类的ReadToEnd()和Stream ...

  9. UVA12545_Bits Equalizer

    题目意思很简单,给你两个串,第一个串为0,1或者?,第二个串为0,1, 每次你可以对第一个串进行三种操作,1.0变为1:2.?变为0或者1:3.交换任意两个数的位置. 现在问你能否把第一个串变为第一个 ...

  10. HDU4258_Covered Walkway

    题目是一个很典型的斜率优化的题目.题意就不说了. 是这样的,对于双端优先队列,我们共有队首和队尾两个删除操作,来保证对于任意一个i,第一个元素都是最优的. 我们把dp的转移方程列出来就直达其状态为f[ ...