忍者ブログ
20 April

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

09 January

SRM603 div2 easy

問題文


http://community.topcoder.com/stat?c=problem_statement&pm=12940

文字列"s"が与えられる。
・文字列の長さが奇数の時、その"s"の真ん中の文字を"t"の末尾に加え、"s"からは消す。
・文字列の長さが偶数の時、その"s"の真ん中の2つの文字の内小さい方を
"t"の末尾に加え、"s"からは消す。

この操作を"s"がなくなるまでやった時の"t"を返せ。


解法


指示された通りにコードを書いていけば大丈夫。
eraseとか使ってる時に、
コンパイルが1回で通るとビビるのを治したいw



#include<iostream>
#include<vector>
#include<map>
#include<algorithm>
#include<functional>
#include<climits>
#include<string>

using namespace std;

class MiddleCode{
public:
	string encode(string s){
		string t;
		while(!s.empty()){
			if(s.size()%2 == 0){
				//even number
				if(s[s.size()/2-1]<s[s.size()/2]){
					t.push_back(s[s.size()/2-1]);
					s.erase(s.size()/2-1,1);
				}else{
					t.push_back(s[s.size()/2]);
					s.erase(s.size()/2,1);
				}
			}
			else{
				//odd number
				t.push_back(s[s.size()/2]);
				s.erase(s.size()/2,1);
			}
		}
		return t;
	}
};

PR