之间的博客,承上启下:  

 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. 并查集与最小生成树Kruskal算法

    一.什么是并查集 在计算机科学中,并查集是一种树型的数据结构,用于处理一些不交集的合并及查询问题.有一个联合-查找算法(union-find algorithm)定义了两个用于次数据结构的操作: Fi ...

  2. 洛谷 题解 P3627 【[APIO2009]抢掠计划】

    图论 tarjan缩点+最短路 的一道题 tarjan求强连通分量(为以后缩点打下良好的基础) (如果不会tarjan的请点击这儿) 你需要的东西: (1).dfn[],表示这个点在dfs时是第几个被 ...

  3. 数据结构 -- 二叉树(Binary Search Tree)

    一.简介 在计算机科学中,二叉树是每个结点最多有两个子树的树结构.通常子树被称作“左子树”(left subtree)和“右子树”(right subtree).二叉树常被用于实现二叉查找树和二叉堆. ...

  4. Netty中两种Keepalive的区别

    在Server端开启TCP keepalive: 两种方式 serverBootstrap.childOption(ChannelOption.SO_KEEPALIVE, true); serverB ...

  5. Ural 1029 Ministry 题解

    目录 Ural 1029 Ministry 题解 题意 题解 程序 Ural 1029 Ministry 题解 题意 给定一个\(n\times m(1\le n \le10,1\le m \le50 ...

  6. GB18030 字符集

    gb18030 编辑 国家标准GB18030-2005<信息技术 中文编码字符集>是我国继GB2312-1980和GB13000.1-1993之后最重要的汉字编码标准,是我国计算机系统必须 ...

  7. zookeeper-伪分布式搭建

    1. 下载解压 2. 在conf目录下,新建3个文件(3台服务器):zoo1.cfg.zoo2.cfg.zoo3.cfg zoo1.cfg: tickTime=2000dataDir=/tmp/zoo ...

  8. 分布排序(distribution sorts)算法大串讲

    ref : https://dsqiu.iteye.com/blog/1707383   本文内容框架: §1 鸽巢排序(Pigeonhole) §2 桶排序(Bucket Sort)   §3 基数 ...

  9. 如何将 HTML 转换为 XHTML

    1.添加一个 XHTML <!DOCTYPE> 到你的网页中 2.添加 xmlns 属性添加到每个页面的html元素中 3.改变所有的元素为小写 4.关闭所有的空元素 5.修改所有的属性名 ...

  10. 将自定义dockerfile生成的image推送到仓库中

    本文为以阿里云的案例方法,其他方法未尝试 1.注册阿里云账号 2.设置密码并通过docker登录 3.创建命名空间 4.创建镜像仓库 创建仓库时,需要选择代码源的仓库储存的方式,这里我用的是gitHu ...