字符串基础习题(一)

字符串基础习题(一)(java)

最近在复习一些基本知识,整理了一点字符串的基本习题,都比较基础,希望可以对小码们有点帮助,今天先更前半部分,预知后半如何,请看下回分解♪♪→→♚♚。

1.串内是否存在重复字符

基本思想:

  1. 开辟辅助数组记录每个字符的出现次数(该处开辟大小为128,用于存储128个ASCLL码),类似于对号入座
  2. 扫描字符串,如果当前字符在串中有记录,直接返回false,否则返回true
public static boolean checkNoRepeat(String instr)
{
	if(instr.isEmpty())
		return true;
	int []temp=new int [128];
	for (int i=0;i<instr.length();i++)
	{
		int c=(int)(instr.charAt(i));
		if(temp[c]>0)		return false;
		else temp[c]++;	
	}
	return true;
}

附:验证代码块

//	eg1	验证
		String str1="abcdefg";
		String str2="abcdefff";
		System.out.println(checkNoRepeat(str1));
		System.out.println(checkNoRepeat(str2));

运行结果:
在这里插入图片描述

2.字符串翻转

基本思路:

  1. Method1:开辟等大的空间,倒序存储
  2. Method2:使用StringBuffer或者StringBuilder类中现有的API
    注:自认为java和C最大的不同是java有很多现有的API 提供我们使用,使用现存的API在编程过程中会节约很多时间,所以掌握必要的一些API还是有必要的,大家可以上网查相应的API 库,如果不顺利可以留言分享给小码哟,希望对小码们有帮助
/****************************eg2	翻转字符串1*********************/
public static String  reserveStr(String instr)
{
	int len=instr.length();//记录输入的字符串长度
	char []strc=new char[len];//开辟等长的字符数组
	for(int i=0;i<len;i++)
	{
		strc[i]=instr.charAt(len-1-i);	//字符串从后往前,对字符数组一一赋值
	}
	return new String(strc);
}
/****************************eg2	翻转字符串2——API*********************/
public static String reserveStr1(String instr)
{
	StringBuffer sb=new StringBuffer(instr);//将String类型的字符串,转换为StringBuffer类型
	return sb.reverse().toString();//直接使用StringBuffer 的API 的reserve()函数进行翻转,之后将StringBuffer转换为String(toString()函数)返回
}
//使用StringBuilder中的函数
public static String reserveStr2(String instr)
{
	StringBuilder sb=new StringBuilder(instr);//将String类型的字符串,转换为StringBuilder类型
	return sb.reverse().toString();//直接使用StringBuilder的API 的reserve()函数进行翻转,之后将StringBuffer转换为String(toString()函数)返回
}

附:验证代码块

//		eg2	验证
		String str1="abcdefg";
		System.out.println(reserveStr(str1));
		System.out.println(reserveStr1(str1));
		System.out.println(reserveStr2(str1));

运行结果:
在这里插入图片描述
今天先更两道题吧,明天还更哟~
上文均属原创,若有错误还请小码们指正,定多加改正。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柚子味的羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值