字符串的统计字符串(count and say类似题目)

题目一:

给定一个字符串str,返回其统计字符串,例如String s="aaabbadddffc";其统计字符串形式为”a_3_b_2_a_1_d_3_f_2_c_1“。


最后一组总是要额外添加,且在这里形式较之前的在最后少了一个”_“.

public String countAndSay(String s)
{
	if(s == null||s.length() == 0)
		return s;
	String result="";
	char pre=s.charAt(0);
	int count=1;
	for(int i=1;i<s.length();i++)
	{
		if(s.charAt(i) == pre)
		{
			count++;
		}else
		{
			result=result+pre+"_"+count+"_";
			pre=s.charAt(i);
			count=1;
		}
	}
	//最后一个总是加不上
    result=result+pre+"_"+count;
    return result;	
}


题目二:

给定一个字符串的统计字符串,再给定一个整数,返回原始字符串上该整数上的字符。


统计字符串形式如”a_3_b_2_a_1_d_3_f_2_c_1“, 发现分割分为"_",利用split("_")函数划分后便容易处理。

public String function(String cstr,int k)
{
	String[] strs=cstr.split("_");
	//得到的矩阵为[a, 3, b, 2, a, 1, d, 3, f, 2, c, 1]
	int sum=0;
	for(int i=1;i<strs.length;i+=2)//index为奇数是的字符串代表个数。
	{
		sum+=Integer.valueOf(strs[i]);//通过Integer.valueOf()将字符串转化为整数
		if(sum > k)
		{
			return strs[i-1];//返回所求字符
		}
	}
	return null;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值