LeetCode 345 字符串处理

这一题属于简单难度的题目,方法的话使用双指针。一个指针从0开始扫描一个指针从末尾开始扫描
当前指针大于后指针结束循环。
有几个点需要注意:第一要注意元音的大小写,题目里没有写清楚,但是测试用例需要考虑
第二:字符串穿的长度要足够大,题目里也没有讲清楚,但是有超长字符串,内存空间分配的不够会导致内存不够的错误
代码如下: 总体效率还可以,但是存储空间消耗的有些多
#define Max_Len 1000001
bool isVovwel(char c)
{
if ((tolower©==‘a’)|| (tolower© == ‘e’)||(tolower© ==‘i’)|| (tolower© == ‘o’)|| (tolower© == ‘u’)) {
return true;
}
else {
return false;
}
}

char * reverseVowels(char * s) {

char*  ret = (char*)calloc(sizeof(char)*Max_Len,sizeof(char));

if (s == NULL) {
	return NULL;
}
int len = strlen(s);
if (len == 1) {
	return s;
}
int i = 0; 
int j = len-1;
while (i<=j)
{
	if (!isVovwel(s[i])) {
		ret[i] = s[i];
		i++;
	}
	if(isVovwel(s[i]))
	{
		while (!isVovwel(s[j]))
		{
			ret[j] =s[j];
			j--;
		}
		char temp = s[i];
		ret[i] = s[j];
		ret[j] = s[i];
		i++;
		j--;
	}
}
return ret;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值