之间的博客,承上启下:  

 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. 【ARM-Linux开发】Rico Board DIY系列实验教程 Day 2——搭建Boa服务器

    一:BOA WebServer简介 BOA WebServer是一款单任务的HTTP服务器,与其他网页服务器不同之处,是当有连接请求到来是,它既不是为每个连接都单独创建进程,也不是采用复制自身进程处理 ...

  2. FastJson反序列化获取不到值

    今天碰到一个问题,使用fastjson反序列化,就是将JSON解析成javaBean时,一个字段值为null.后面经查,是JavaBean中的set方法写错了,fastJson解析的是利用反射通过se ...

  3. hadoop在eclipse当中如何添加源码?

    [学习笔记] /*org.apache.hadoop.mapreduce.Mapper.Context,java.lang.InterruptedException,想看map的源代码,按contro ...

  4. PHP二维数组的引用赋值容易犯的错误

    大家一起来分析一下下面这段代码: <?php $arr = array(); $arr["abc"] = array("sex" => 100, & ...

  5. 『Django』第N+1节: Django自带的认证系统 - auth

    个人网站: lipeiguan.top 以后会慢慢转移到个人网站, 欢迎大家收藏^ . ^ 写在前面 我们在开发一个网站的时候, 经常需要实现网站的用户系统. 这个时候我们需要实现用户注册.用户登录. ...

  6. React-intl相关使用介绍

    React-intl用于国际化react组件,提供react组件和api来格式化日期.数字,字符等等.其中一个很重要的功能是实现文本翻译,将你所做的中文版应用所有文字转为英文. 关于配置什么的,请参照 ...

  7. AtCoder Grand Contest 040 B - Two Contests

    传送门 一看就感觉很贪心 考虑左端点最右的区间 $p$ 和右端点最左的区间 $q$ 如果 $p,q$ 属于同一个集合(设为 $S$,另一个集合设为 $T$),那么其他的区间不管是不是在 $S$ 都不会 ...

  8. 深度挖坑:从数据角度看人脸识别中Feature Normalization,Weight Normalization以及Triplet的作用

    深度挖坑:从数据角度看人脸识别中Feature Normalization,Weight Normalization以及Triplet的作用 周翼南 北京大学 工学硕士 373 人赞同了该文章 基于深 ...

  9. Docker启动Elasticsearch报错vm.max_map_count

    报错信息如下 max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 临 ...

  10. [Vuex系列] - Vuex中的getter的用法

    Vuex 允许我们在store中定义“getter”(可以认为是store的计算属性).就像计算属性一样,getter的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算. g ...