栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

爪哇(java)复习day15-2021/10/5

Java 更新时间:发布时间: 百科书网 趣学号

String中常见的算法题:

1.模拟trim()方法,去除字符串首尾的空格

	public  String cutBlank(String str) {
		String target="";
		if(!str.isEmpty()) {
			char [] ch=str.toCharArray();
			for(int i=0;i 

 

2.将字符串中指定部分进行反转,例如abcdefg->abfedcg

	public static String reverse(String str,int start,int end) {
		String s="";
		if(!str.isEmpty() && end > start && start>=1) {
			String target=str.substring(start-1, end);
			char [] ch=target.toCharArray();
			for(int i=0;i 

3.获取一个字符串在另一个字符串中出现的次数,例如"ab"在"abkkcadkabkebfkabkskab"中出现的次数 

     
	public static int countMethod(String target,String source) {
		int count=0;
		int i=0;
		if(!target.isEmpty() && !source.isEmpty()) {
			while(true) {
				if(source.indexOf(target, i)!=-1) {
					int index=source.indexOf(target, i);
					i=index+target.length();
					count++;
				}else {
					break;
				}
			}
		}else {
			throw new RuntimeException("输入的字符串不正确");
		}
		return count;
		
	}

4.获取两个字符串中的最大相同子串  str1="abcwerthelloyuiodef" str2="cvhellobnm"

	public static String maxSubString(String target,String source) {
		String s="";
		int count=0;
		if(!target.isEmpty() && !source.isEmpty()) {
			if(source.contains(target)) {
				return target;
			}else {
				for(int i=0;icount) {
									count=count1;
									s=str;
								}
							}else {
								break;
							}
						}
					}
				}
			}
		}else {
			throw new RuntimeException("输入的字符串不正确");
		}
		return s;
	}

5.对字符串中的字符进行自然顺序排序 "befa"->"abef"

 

	public static String sort(String str) {
		String s;
		if(!str.isEmpty()) {
			char [] ch=str.toCharArray();
			for(int i=0;ich[j+1]) {
						char temp=ch[j];
						ch[j]=ch[j+1];
						ch[j+1]=temp;
					}
				}
			}
			s=new String(ch);
		}else {
			throw new RuntimeException("输入的字符串不正确");
		}
		return s;
	}
String、StringBuffer、StringBuilder三者的区别

1.String是不可变的字符序列,内部定义的是final的char数组接收数据

2.StringBuffer是可变的字符序列,内部定义的char数组接收数据,每个方法都是同步方法所以是线程安全的,所以效率很低一些

 

3.StringBuilder是可变的字符序列,内部定义的是char数组接收数据,线程不安全的,效率会高一些

4.StringBuffer默认的数组长度是16,如果添加的字符串长度超过默认的容量,会进行扩容。

扩容的规则是2*n+2 (n为原来的容量),StringBuffer中的length方法返回的是添加的元素个数。

6.不是多线程问题的话建议使用StringBuilder,建议使用StringBuffer的构造器定义容量的大小

7.效率上:StringBuilder > StringBuffer > String

            long start=0L;
			long end=0l;
			String str="";
			StringBuffer buffer=new StringBuffer("");
			StringBuilder builder=new StringBuilder("");
			
			start=System.currentTimeMillis();
			for(int i=1;i<=20000;i++) {
				str+=i;
			}
			end=System.currentTimeMillis();
			System.out.println(end-start);
			
			start=System.currentTimeMillis();
			for(int i=1;i<=20000;i++) {
				buffer.append(String.valueOf(i));
			}
			end=System.currentTimeMillis();
			System.out.println(end-start);
			
			start=System.currentTimeMillis();
			for(int i=1;i<=20000;i++) {
				builder.append(String.valueOf(i));
			}
			end=System.currentTimeMillis();
			System.out.println(end-start);

 StringBuffer的方法:

 1.增 append()、insert(int offset,String xxx)

//增 append(),insert(int offset,String xxx)
		StringBuffer sb=new StringBuffer("abc");
		sb.append("def");
		System.out.println(sb);
		System.out.println("****************");
		sb.insert(sb.length(),"ghi");
		System.out.println(sb);

 

 2.删 delete(int start,int end)、deleteCharAt(int index)

	//删 delete(int start,int end) [start,end) deleteCharAt(int index)
		StringBuffer sb=new StringBuffer("abcefg");
		System.out.println(sb.delete(3, sb.length()));
		System.out.println(sb.deleteCharAt(0));

  

 3.改 setCharAt(int index,char c)、replace(int start,int end,String str)

 

		// 改 setCharAt(int index,char c) replace(int start,int end,String str)
		StringBuffer sb=new StringBuffer("abcefg");
		sb.setCharAt(0, 'A');
		System.out.println(sb);
		sb.replace(1, sb.length(), "BCEFG");
		System.out.println(sb);

 

 

 4.查 charAt(int index)、indexOf(String str,int fromIndex)

 5.反转reverse()

		StringBuffer sb=new StringBuffer("abcefg");
		System.out.println(sb.reverse());

 

 

 

 

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/295430.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号