another kata
This commit is contained in:
54
Highest Scoring Word/highest_scoring_word.cpp
Normal file
54
Highest Scoring Word/highest_scoring_word.cpp
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
#include <string>
|
||||||
|
#include <map>
|
||||||
|
#include <vector>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
std::string alphabet = "abcdefghijklmnopqrstuvwxyz";
|
||||||
|
|
||||||
|
std::map<char, int> generateAlphabetScores(){
|
||||||
|
std::map<char, int> result;
|
||||||
|
for(int i = 0; i<alphabet.length(); i++){
|
||||||
|
result[alphabet[i]] = i + 1;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::map<char, int> scores = generateAlphabetScores();
|
||||||
|
|
||||||
|
int calcScore(std::string word){
|
||||||
|
int score = 0;
|
||||||
|
for(auto c: word){
|
||||||
|
score += scores[c];
|
||||||
|
}
|
||||||
|
return score;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<std::string> split(std::string input, std::string delimiter = " "){
|
||||||
|
ulong pos = 0;
|
||||||
|
std::vector<std::string> result;
|
||||||
|
while((pos = input.find(delimiter)) != std::string::npos){
|
||||||
|
result.push_back(input.substr(0, pos));
|
||||||
|
input.erase(0, pos + delimiter.length());
|
||||||
|
}
|
||||||
|
// Append remaining element!
|
||||||
|
result.push_back(input);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string highestScoringWord(const std::string &str)
|
||||||
|
{
|
||||||
|
int score = 0;
|
||||||
|
std::string bestWord = "";
|
||||||
|
for(auto word: split(str)){
|
||||||
|
int newScore = calcScore(word);
|
||||||
|
if(newScore > score){
|
||||||
|
score = newScore;
|
||||||
|
bestWord = word;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return bestWord;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(){
|
||||||
|
std::cout << highestScoringWord("aa b");
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user