之间的博客,承上启下:  

 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. Introduction - What is machine learning

    摘要: 本文是吴恩达 (Andrew Ng)老师<机器学习>课程,第一章<绪论:初识机器学习>中第2课时<什么是机器学习?>的视频原文字幕.为本人在视频学习过程中逐 ...

  2. Spring 控制器层如何启用验证?

    1.示例代码 @PostMapping("/adduser") public String addUser(@Valid User user,BindingResult bindi ...

  3. JavaScript、TypeScript、ES6三者之间的联系和区别

    ES6是什么 ECMAScript 6.0(以下简称ES6)是JavaScript语言(现在是遵循ES5标准)的下一代标准,已经在2015年6月正式发布了.它的目标,是使得JavaScript语言可以 ...

  4. for i in range()

    for i in range()就是python中的循环语句 有以下三种常见用法: 1.range(3) [0,3)即0,1,2 2.range(1,3) [1,3)即1,2 3.range(1,5, ...

  5. 学习笔记:oracle之win10安装卸载oracle 11gR2步骤及常见问题解决

    1.win10下安装oracle11g 1.1 工具原料 oracle11g安装包(64位) 1.2 步骤方法 1.在Oracle官网下载安装包,下载后,得到的文件如图所示: 2.将两个文件进行解压缩 ...

  6. C++:顺序表类实现约瑟夫问题_密码不同

    //.h #pragma once #include <iostream> using namespace std; #define MAXSIZE 100 template <cl ...

  7. Linux/ubuntu 心得

    基本命令 有n个软件未被升级(有强迫症的,不爽的 apt-get dist-upgrade 更改主机名字 git 不要免密输入的话,可在当前工作目录执行 git config credential.h ...

  8. ajax与jsonp中的几个封装函数

    首先是ajax里的get 在页面上添加几个标签用作测试 <body> <input type="text" id="user"> < ...

  9. homestead的创建和使用

    1.下载vistualbox和vagrant并安装 2.安装了git的话就在想设置的目录或者文件夹下用git命令执行vagrant box add laravel/homestead,或者用cmd命令 ...

  10. Java+Tomcat 环境部署

    Java+Tomcat 环境部署 下面在Centos7进行安装Java+Tomcat,网上的很多文章,我在部署中都有些问题,下面是我自己总结的一个安装过程! 安装Java环境 首先,我们先到Java官 ...