作者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://www.ptt.cc/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
→ bibo9901: 試試 reverseVowels("sdfghjkl") 05/11 16:11
→ EngRookie: 可以 run on PC,但是在 leetcode 網站上似乎沒有output 05/11 16:20
→ EngRookie: 謝謝 我找到問題了 05/11 16:23
→ EdareuqSam: 問題是什麼? 05/11 16:30
→ sb107912: input字串沒母音 會出問題? 05/11 16:30
→ hichcock: 這簡單~ 放一個假的就好了 05/11 16:33
→ EngRookie: 判斷式改成 while (L < R && !isVowels(Array[L])) 05/11 16:43
→ hichcock: 呵呵~~ 抱歉, 我比較懶~ 請不要理我的建議 :P 05/11 16:46
→ MOONRAKER: 不錯 放一個假的 結束前把它幹掉 05/12 00:42