Re: [問題] 字串倒轉 - 只倒轉母音

看板C_and_CPP (C/C++)作者 (EngRookie)時間10年前 (2016/05/11 15:56), 10年前編輯推噓0(009)
留言9則, 6人參與, 最新討論串3/3 (看更多)
謝謝上一篇作者的改正,看過題目之後應該有許多人知道小弟正在刷 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

05/11 16:11, , 1F
試試 reverseVowels("sdfghjkl")
05/11 16:11, 1F

05/11 16:20, , 2F
可以 run on PC,但是在 leetcode 網站上似乎沒有output
05/11 16:20, 2F

05/11 16:23, , 3F
謝謝 我找到問題了
05/11 16:23, 3F

05/11 16:30, , 4F
問題是什麼?
05/11 16:30, 4F

05/11 16:30, , 5F
input字串沒母音 會出問題?
05/11 16:30, 5F

05/11 16:33, , 6F
這簡單~ 放一個假的就好了
05/11 16:33, 6F

05/11 16:43, , 7F
判斷式改成 while (L < R && !isVowels(Array[L]))
05/11 16:43, 7F

05/11 16:46, , 8F
呵呵~~ 抱歉, 我比較懶~ 請不要理我的建議 :P
05/11 16:46, 8F

05/12 00:42, , 9F
不錯 放一個假的 結束前把它幹掉
05/12 00:42, 9F
文章代碼(AID): #1NCkN936 (C_and_CPP)
文章代碼(AID): #1NCkN936 (C_and_CPP)