一日一アルゴリズム:回文判断
3032 ワード
問題の説明:
返事とは何ですか.例えば、aha、adda、ahahだけでは返事ではありません.
文字列が返信文であることをどのように判断しますか?
ここでの考え方は,キュー方式を用いて,文字の中間の位置を見つけ,中間文字の前のすべてをスタックに入れ,その後すべてスタックを出て,中間文字の後の文字と比較し,すべてが同じであれば回文である.
コード:
返事とは何ですか.例えば、aha、adda、ahahだけでは返事ではありません.
文字列が返信文であることをどのように判断しますか?
ここでの考え方は,キュー方式を用いて,文字の中間の位置を見つけ,中間文字の前のすべてをスタックに入れ,その後すべてスタックを出て,中間文字の後の文字と比較し,すべてが同じであれば回文である.
コード:
#include<iostream>
#include <queue>
#include <string.h>
using namespace std;
int main()
{
char str[] = "ahaha";
char tmp[10] = {0};
int middle = sizeof(str)/sizeof(char) / 2 -1 ;
queue<char> str_queue;
for (int i = middle - 1; i >= 0; i--) {
str_queue.push(str[i]);
}
int i = 0;
while (!str_queue.empty()) {
tmp[i] = str_queue.front();
str_queue.pop();
i++;
}
tmp[i] = '\0';
if (memcmp(str+3, tmp, 2) == 0 ) {
cout << "Yes" << endl;
} else {
cout << "No " << endl;
}
}