之间的博客,承上启下:  

 Java基础 String/StringBuff 常用操作方法复习/内存分析

Java数组直接选择排序、sort()排序

Java基础 String 算法 - 五个练习题目要求:

/**
1.模拟一个trim方法,去除字符串两端的空格。
2.将一个字符串进行反转。将字符串中指定部分进行反转。比如将“abcdefg”反转为”abfedcg”
*/
/**
3.获取一个字符串在另一个字符串中出现的次数。
比如:获取“ ab”在 “abkkcadkabkebfkabkskab”中出现的次数.
4.获取两个字符串中最大相同子串。比如:
str1 = "abcwerthelloyuiodef“;str2 = "cvhellobnm"
提示:将短的那个串进行长度依次递减的子串与较长
的串比较。
5.对字符串中字符进行自然顺序排序。
提示:
1)字符串变成字符数组。
2)对数组排序,选择,冒泡,Arrays.sort();
3)将排序后的数组变成字符串。
*
*/

算法代码:(全为裸的暴力代码,)

import java.lang.reflect.Array;
import java.util.Arrays; public class Test_String {
public static void main(String[] args) {
//1.
myTrim(" 12 123 234 ");myTrim("12 123 234 ");
myTrim("12 123 234");myTrim(" ");
//2.
RevString("123456",1,4);
RevString("123456",3,5);
RevString("123456",5,5);
//3.
CountSubStr("ab","abkkcadkabkebfkabkskab");
CountSubStr("abkkcadkabkebfkabkskab","abkkbkebfkabkskab");
CountSubStr("abkkcadkabkebfkabkskab","abkkcadkabkebfkabkskab");
//4.
CountLongestSubStr("abkkcadkabkebfkabkskab","abkkbkebfkabkskab");
CountLongestSubStr("4564698719","145764987134874364");
//5.
SortStr("46541324asdvdsd");
SortStr("465asdAA41324asdvdsd");
}
//1.模拟一个trim方法,去除字符串两端的空格。
public static void myTrim(String str){
int start=0,endd=str.length()-1;
char[] s= str.toCharArray();
for(int i=0;i<endd;i++){
if(s[i]==' ')
start++;
else
break;
}
for(int i=endd;i>=start;i--){
if(s[i]==' ')endd--;
else
break;
}
String s2=new String(s,start,endd-start+1);
System.out.println("myTrim() :["+str+"] -->["+s2+"]");
}
//2.将一个字符串进行反转。将字符串中指定下标的部分进行反转
public static void RevString(String str,int st,int ed){
char[] s= str.toCharArray();
int len=str.length();
if(st<0||ed>=len||st>ed){
System.out.println("Range Error!");return ;
}
for(int i=st,j=ed;i<j;i++,j--){
char temp=s[i];
s[i]=s[j];
s[j]=temp;
}
String ss=new String(s);
System.out.println("RevString() "+str+"--指定下标反转-->"+ss);
}
//3.获取一个字符串s1在另一个字符串s2中出现的次数。
public static int CountSubStr(String str1,String str2) {
char[] s1= str1.toCharArray();int len1=str1.length();
char[] s2= str2.toCharArray();int len2=str2.length();
//枚举母串的起点和终点的位置,进行裸匹配
int cnt=0;
for(int i=0;i<s2.length;i++){
int j=i+len1-1;
if(j>=len2){
break;
}
int flag=0;
for(int k=i;flag==0 && k<=j;k++){
if(s1[k-i]!=s2[k])
flag=1;
}
if(flag==0){
cnt++;
// System.out.println("****"+i+" "+j);
}
}
System.out.println("CountSubStr() "+str1+" in "+str2+" counting "+cnt+" times!");
return cnt;
}
public static int CountSubStr2(String str1,String str2) { //为第四题做准备,只是删去了输出!
char[] s1= str1.toCharArray();int len1=str1.length();
char[] s2= str2.toCharArray();int len2=str2.length();
//枚举母串的起点和终点的位置,进行裸匹配
int cnt=0;
for(int i=0;i<s2.length;i++){
int j=i+len1-1;
if(j>=len2){
break;
}
int flag=0;
for(int k=i;flag==0 && k<=j;k++){
if(s1[k-i]!=s2[k])
flag=1;
}
if(flag==0){
cnt++;
// System.out.println("****"+i+" "+j);
}
}
return cnt;
}
//4.获取两个字符串中最大相同子串
public static void CountLongestSubStr(String sonstr,String str){
char[] s1= sonstr.toCharArray();
char[] s2= str.toCharArray();
int ans_len=0; ///解决思路:直接枚举子串的所有子串,然后一一跟母串进行匹配
String ansString="";
for(int i=0;i<s1.length;i++){
for(int j=i+1;j<s1.length;j++){
int num=CountSubStr2(new String(s1,i,j-i+1),str);
if(num>0&&ans_len<(j-i+1)){
ans_len=j-i+1;
ansString=new String(s1,i,j-i+1);
}
}
}
System.out.println("CountLongestSubStr() "+sonstr+" & "+str+" is ["+ansString+
"],len is "+ans_len);
} //5.字符串变成字符数组。2)对数组排序
    public static void SortStr(String str){
char s[]=str.toCharArray();
Arrays.sort(s);
System.out.println("SortStr() "+str+"-->"+ "["+new String(s)+"]" );
}
}

 输出结果:

myTrim() :[ 12 123 234 ] -->[12 123 234]
myTrim() :[12 123 234 ] -->[12 123 234]
myTrim() :[12 123 234] -->[12 123 234]
myTrim() :[ ] -->[]
RevString() 123456--指定下标反转-->154326
RevString() 123456--指定下标反转-->123654
RevString() 123456--指定下标反转-->123456
CountSubStr() ab in abkkcadkabkebfkabkskab counting 4 times!
CountSubStr() abkkcadkabkebfkabkskab in abkkbkebfkabkskab counting 0 times!
CountSubStr() abkkcadkabkebfkabkskab in abkkcadkabkebfkabkskab counting 1 times!
CountLongestSubStr() abkkcadkabkebfkabkskab & abkkbkebfkabkskab is [bkebfkabkskab],len is 13
CountLongestSubStr() 4564698719 & 145764987134874364 is [9871],len is 4
SortStr() 46541324asdvdsd-->[12344456adddssv]
SortStr() 465asdAA41324asdvdsd-->[12344456AAaaddddsssv]

测试结果正确不代表算法完全正确, 本文章仅供参考!

Java基础 String 裸暴力算法- 五个小练习的更多相关文章

  1. Java基础String的方法

    Java基础String的方法 字符串类型写法格式如下: 格式一: String 变量名称; 变量名称=赋值(自定义或传入的变量值); 格式二: String 变量名称=赋值(自定义或传入的变量值); ...

  2. Java基础—String构造方法

    Java基础--String构造方法 public String(): 创建一个空表字符串对象,不包含任何内容 public String(char[]chs): 根据字符数组的内容,来创建字符串对象 ...

  3. Java基础——String

    前言 从去年八月末开始工作一年了,有了大半年的java开发经验,自认为比在大学时期编码能力强了很多,但是基础方面概念模糊的地方感觉越来越多了 (:´д`)ゞ 所以,我准备把这些问题以及工作中遇到的问题 ...

  4. java基础-String不可变的好处

    一.java内部String类的实现: java 8: public final class String implements java.io.Serializable, Comparable< ...

  5. Java基础 -- String,StringBuilder,StringBuffer三者的区别

    结论 1-String,StringBuilder,StringBuffer 之间的区别主要是在两个方面,即运行速度和线程安全这两方面: 首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:St ...

  6. Java基础—String总结

    特点 String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. String实 ...

  7. java基础——String的常用方法

    java中String的常用方法 1.length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); i nt le ...

  8. java基础 String

    标准格式:数据类型[] 数组名称 = new 数据类型[] {元素1,元素2,...};省略格式:数据类型[] 数组名称 = {元素1,元素2,...}; Scanner类实现的功能,可以实现键盘输入 ...

  9. Java基础 String/StringBuff/StringBuilder 常用操作方法复习/内存分析/三者的效率比较

    附:jdk1.8使用IDEA安装.创建.使用JUnit单元测试 笔记总结: /**String 复习 * 1.像C++这样的char arr[]="..." 的方式无法声明Java ...

随机推荐

  1. linux centos7 开启 mysql 3306 端口 外网访问 的实践

    第〇步:思路 3306 端口能否被外网访问,主要要考虑: (1)mysql的3306 端口是否开启?是否没有更改端口号? (2)mysql 是否允许3306 被外网访问? (3)linux 是否已经开 ...

  2. 判断浏览器是否ie6

    if ($.browser.msie && ($.browser.version == "6.0") && !$.support.style) { ...

  3. linux shell中的EOF

    关键词:EOF 在平时的运维工作中,我们经常会碰到这样一个场景:执行脚本的时候,需要往一个文件里自动输入N行内容.如果是少数的几行内容,还可以用echo追加方式,但如果是很多行,那么单纯用echo追加 ...

  4. Git 常用命令 MD

    | Markdown版本笔记 | 我的GitHub首页 | 我的博客 | 我的微信 | 我的邮箱 || :------------: | :------------: | :------------: ...

  5. C#xml泛型序列化

    using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Web ...

  6. hdu 5672 尺取还是挺好用的

    先简单介绍下尺取法 http://blog.chinaunix.net/uid-24922718-id-4848418.html 尺取法就是在卡给定条件的时候 不断的改变下标 起点 终点 #inclu ...

  7. (十四)Hibernate中的多表操作(4):单向一对一

    案例一: 注解方式实现一对一 UserBean.java package bean; import java.io.Serializable; import javax.persistence.Col ...

  8. webapi IHttpActionResult无引用和config.MapHttpAttributeRoutes()无引用解决办法

    1. 打开NuGet,打开方法 工具->库程序包管理器->程序包管理器控制台,如下图所示: 2. 输入如下命令Install-Package Microsoft.AspNet.WebApi ...

  9. 菜鸡之NetCore 使用EF操作数据库 Oracle & Sqlserver (一)

    摘要: 该篇文章主要记录netCore EFCore 如何操作Oracle和SqlServer 数据库,采用Codefirst方式创建数据库以及表. 一, 项目建立 项目采用DDD领域驱动设计模式[学 ...

  10. eclipse复制工作空间配置步骤

    多个workspace,把每个workspace的设置共享,省去每次都重新配置一次. 总结一下,复制工作空间配置步骤如下: [最好是在新的workspace创建项目之前操作] 1 使用eclipse新 ...