indexOf 和 charAt 的用法

一、indexOf的两种用法:

1. indexOf(String str):返回指定字符str在字符串中第一次出现处的起始索引,如果此字符串中没有这样的字符,则返回-1。

2. indexOf(String str,int index):返回从index位置开始查找指定字符str在字符串中第一次出现处的起始索引,如果此字符串中没有这样的字符,则返回-1。

如:

str = "147258369147258";
System.out.println(str.indexOf("258"));
System.out.println(str.indexOf("258",6));

两个结果分别为3和12。

第一个输出函数只有一个参数,因此相当于从0的索引开始查找,直到找到字符串“258”的“2”所在的索引4。

第二个输出函数有两个参数,从索引为6的字符开始查找,直到找到字符串“258”的“2”所在的索引12。

这就是indexOf的用法。

二、charAt的用法:

charAt()方法用于返回指定索引处的字符。索引范围从0到length()-1。

如:

public class Test{
    public static void main(String args[]){
         String s = "aaafawfew";
         char a = s.charAt(6);
         System.out.println(a);
    }
}

以上程序所得结果为 f 。

三、结合 indexOf 和 charAt 方法求无重复字符的最长字串。

class Test {
	public int Test1(String s) {
		int i = 0;  //索引所在位置
		int flag = 0;   //从此索引开始查找
		int length = 0;  //无重复字符的最长长度
		int result = 0;  //最大长度
		while (i < s.length()) {
		   int pos = s.indexOf(s.charAt(i),flag); //pos是从flag开始查找的最近的s.charAt(i)
		   if (pos < i) {   //发现了重复字符
				flag = pos + 1;  //当找到重复字符时,让flag等于第一个重复字符的索引+1
			  if (length > result) {
				  result = length;
			  }
			  if (result >= s.length() - pos - 1) { //如果最大长度大于剩余长度,返回result
					return result;
			  }
				length = i - pos - 1;  //i-pos就是长度,而下面有length++,因此要-1
			}
			length++;
			i++;
		}
		return length;
	}
}

indexOf 和 charAt()方法能够大大减少代码的运算量,也能快捷地查找各个重复字符的索引,这样就能返回length的值。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值