作者EngRookie (EngRookie)
看板C_and_CPP
标题Re: [问题] 字串倒转 - 只倒转母音
时间Wed May 11 15:56:54 2016
谢谢上一篇作者的改正,看过题目之後应该有许多人知道小弟正在刷 Leetcode 的题目
但是小弟在 Run Code 的时候可以通过,要 submit solution 的时候却出现
runtime error
应该是有 overflow 的问题,是否有板大可以帮小弟看看哪里出问题呢?
或是告知小弟要怎麽检查这类的问题
感激不尽,谢谢各位
修改程式码如下:
// ReverseVowelsOfString.cpp : 定义主控台应用程式的进入点。
//
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
bool isVowels(char s)
{
if (s >='A'&& s <='Z')
s += 'a' - 'A';
return s == 'a' || s == 'e' || s == 'i' || s == 'o' || s == 'u';
}
char* reverseVowels(char* s)
{
int L = 0, R = strlen(s) - 1;
char tempChar = NULL;
char *Array = (char *)malloc(strlen(s)*sizeof(char)+1);
for (int i = 0; i < strlen(s); i++)
Array[i] = *(s + i);
while (L < R)
{
while (!isVowels(Array[L]))
L++;
while (!isVowels(Array[R]))
R--;
if (L < R)
{
tempChar = Array[L];
Array[L] = Array[R];
Array[R] = tempChar;
}
L++;
R--;
}
*(Array + strlen(s)) = '\0';
return Array;
}
int main(int argc, char* argv[])
{
char *returnStr = NULL;
returnStr = reverseVowels("Hello");
printf("returnStr = %s\n", returnStr);
returnStr = reverseVowels("LeetCode");
printf("returnStr = %s\n", returnStr);
free(returnStr);
system("pause");
return 0;
}
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.220.255.38
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1462953417.A.0C6.html
※ 编辑: EngRookie (61.220.255.38), 05/11/2016 15:59:37
※ 编辑: EngRookie (61.220.255.38), 05/11/2016 16:00:33
1F:→ bibo9901: 试试 reverseVowels("sdfghjkl") 05/11 16:11
2F:→ EngRookie: 可以 run on PC,但是在 leetcode 网站上似乎没有output 05/11 16:20
3F:→ EngRookie: 谢谢 我找到问题了 05/11 16:23
4F:→ EdareuqSam: 问题是什麽? 05/11 16:30
5F:→ sb107912: input字串没母音 会出问题? 05/11 16:30
6F:→ hichcock: 这简单~ 放一个假的就好了 05/11 16:33
7F:→ EngRookie: 判断式改成 while (L < R && !isVowels(Array[L])) 05/11 16:43
8F:→ hichcock: 呵呵~~ 抱歉, 我比较懒~ 请不要理我的建议 :P 05/11 16:46
9F:→ MOONRAKER: 不错 放一个假的 结束前把它干掉 05/12 00:42