/*

需求:练习String

时间:2015/3/11 14:04:35

*/

class StringDemo {

/*

模拟Trim的功能。

思路:

1、判断第一个字符是否为空格,是则继续往后判断,直到不是空格为止,字符串后面则从后往前判断

2、判断完后,剩下的就是要截取的字符串

*/

public String trim(String str) {

if (str == null) {

return "字符串为空";

}

int beginIndex = 0, endIndex = str.length()-1;

while (beginIndex<=endIndex && ' '==str.charAt(beginIndex)) {

beginIndex++;

}

if (beginIndex > endIndex) {

return "字符串全是空格";

}

while (beginIndex<=endIndex && ' '==str.charAt(endIndex)) {

endIndex--;

}

return str.substring(beginIndex, endIndex+1);

}

/*

指定位置,字符串反转

思路:1、转换成字符数组 2、数组反转 3、还原成字符串

*/

public String reverse(String str, int begin, int end) {

char[] ch = str.toCharArray();

reverse(ch, begin, end);

return new String(ch);

}

public String reverse(String str) {

return reverse(str, 0, str.length()-1);

}

/*

数组反转

*/

private void reverse(char[] arr, int begin, int end) {

for (int x=begin, y=end; x<=y; x++, y--) {

swap(arr, x, y);

}

}

/*

数组元素交换

*/

private void swap(char[] arr, int x, int y) {

char tmp = arr[x];

arr[x] = arr[y];

arr[y] = tmp;

}

/*

获取字符串中某字符串出现的次数

思路:1、indexOf('字符串')判断存在与否,并获得角标 2、将上个获得的角标+字符串长度作为下个查询的开始角标,继续判断,直到找不到字符 3、返回计数器的值

*/

public int substringCount(String str, String key) {

int count=0;

for (int begin=str.indexOf(key); begin!=-1; count++) {

begin=str.indexOf(key, begin+key.length());

}

return count;

}

/*

找出两个字符串中最大相同子串。如"klmchellosesdafyouareadg","adfhellogyouaredds",这两个相同子串为"hello"

思路:1、先判断两个串的长短 2、截取短串后,通过判断长串是否包含截取后的短串 3、短串截取原则,从长截到短,这样当截取后,长串包含则是最大相同串

*/

public String getMaxSameSubstring(String s1, String s2) {

String max="", min="";

max = (s1.length()>s2.length()) ?s1:s2;

min = (max==s1) ? s2:s1;

for (int n=0; n

for(int begin=0,end=min.length()-n; end<=min.length(); begin++,end++) {

String tmp = min.substring(begin, end);

if(max.contains(tmp)) return tmp;

}

}

return "";

}

}

class TestString {

public static void main(String[] args) {

StringDemo sd = new StringDemo();

//sop(sd.trim(" sd "));

//sop("(" + sd.reverse(" ab cd ", 2, 4) + ")");

//sop(sd.substringCount("adadfsdadafsdga","ad"));

sop(sd.getMaxSameSubstring("adfhellogyouaredds","klmchellosesdafyouareadg"));

}

public static void sop(Object obj) {

System.out.println(obj);

}

}

java string 练习_JAVA基础练习之String相关推荐

  1. java replaceall函数_java基础—-String中replace和replaceAll方法

    这里面我们分析一下replace与replaceAll方法的差异以及原理. replace各个方法的定义 一.replaceFirst方法 public String replaceFirst(Str ...

  2. java long string 转换_Java long 转成 String的实现

    Java long 转成 String的实现 第一种: String s = String.valueOf(long) 第二种: String s = Long.toString(long) 补充知识 ...

  3. java 字符串总结_Java中字符串(String)总结

    先说说JDK API: JDK中包含大量的API类库,所谓API(Application Programming Interface,应用程序编程接口,这些功能以类的形式封装). JDK API包含的 ...

  4. java super用法_Java基础面试题汇总

    blog.csdn.net/ThinkWon/article/details/104390612 Java概述 何为编程 编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结 ...

  5. java 反射泛型方法_java基础之反射和泛型以及注解

    java基础之反射和泛型以及注解 泛型擦除 泛型擦除: 泛型只在编译时期有效,编译后的字节码文件中不存在泛型信息. 声明泛型集合,集合两端类型必须一致.类型也可以用包装类型,泛型的类型必须是引用类型, ...

  6. java 反射教程_Java基础教程——反射机制

    Java反射机制 Java反射机制是Java语言的一个重要特性,使得Java语言具备"动态性": 在运行时获取任意一个对象所属的类的相关信息; 在运行时构造任意一个类的对象: 在运 ...

  7. java arraylist 构造_Java基础五:构造方法、ArrayList

    Java的构造方法 面向对象:属性和方法,当对象被创建的时候,构造方法用来初始化该对象,给对象的成员变量赋初始值 构造方法的格式: 修饰符 构造方法名(参数列表){方法体} 写法: 1.方法名与他所在 ...

  8. java display.getdefault()_java基础(十一 )-----反射——Java高级开发必须懂的

    本文我们通过一个实际的例子来演示反射在编程中的应用,可能之前大家对反射的学习,仅仅是停留在概念层面,不知道反射究竟应用在哪,所以是一头雾水.相信通过这篇教程,会让你对反射有一个更深层次的认知. 概念 ...

  9. java选填_java基础填空选择题

    Core Java试题 选择填空题:全部为多选题,只有全部正确才能得分. 1. 编译java程序的命令是__B_;运行java程序的命令是____A____;产生java文挡的命令是_____D___ ...

最新文章

  1. jsp在java软件中_5.2在JSP中使用JAVABEAN
  2. 思考:开发者如何挑选最合适的机器学习框架?
  3. Windows上python开发--2安装django框架
  4. origin使用指导。pdf_LabPlot替代Origin用于科研绘图
  5. php调用接口接口代码无法执行,php调用c接口无错版介绍
  6. h5页面保存img_一文彻底解决HTML5页面中长按保存图片功能
  7. discard python_Netty入门教程(一) 实现DISCARD服务
  8. QQ小工具网页版源码
  9. python输出重定向记录
  10. java vo转map_javabean实体类对象转为Map类型对象的方法(转发)
  11. Matlab使用心得
  12. the road to TCPIP(1)--TCPIP详解--数据链路层
  13. ARM指令集之乘法指令
  14. Securing Android: A Survey, Taxonomy, and Challenges --论文笔记
  15. 2021软件测试技能大赛,2021软件测试国赛获奖感言
  16. 如何转换图片格式为png?图片格式如何进行转换?
  17. DNS域名服务之:排查DNS的故障
  18. SYS Informer 完整显示系统、电脑软硬件详细信息
  19. 统计学家的矫情和人工智能专家的反驳
  20. 盘点6个主流的数据分析工具,及优缺点对比

热门文章

  1. 【英语学习】【WOTD】abecedarian 释义/词源/示例
  2. C/C++中指针和引用之相关问题研究
  3. 光线求交加速算法:边界体积层次结构(Bounding Volume Hierarchies)3-LBVH(Linear Bounding Volume Hierarchies)
  4. CPU高速缓存SRAM命中问题的总结与实验
  5. 体绘制的原理和Raycasting的实现
  6. 副法线和正切是什么?
  7. cf550D. Regular Bridge(构造)
  8. Delphi 10.2.3发布
  9. saltstack自动化运维系列②之saltstack的数据系统
  10. lvs-nat负载均衡实验