Problem
Write a function in Java which takes an Array of strings and from the array of strings returns only those strings which have a consecutive repetition of a particular letter
for eg:
if I/P is {"Dauresselam", "slab", "fuss", "boolean", "clap"}
then O/P should be {"Dauresselam", "fuss", "boolean"}
Solution
/*
============================================================================
Author : James Chen
Email : a.james.chen@gmail.com
Description : Find strings with a consecutive repetition of particular letter
Created Date : 18-06-2013
Last Modified :
============================================================================
*/
#include <string>
#include <iostream>
#include <iomanip>
#include <regex>
#include <vector>
#include <iterator>
#include <algorithm>
using namespace std;
void FindRepetiveCharString(vector<string>& input, vector<string>& output)
{
regex re("(.)\\1{1,}");
for(int i = 0; i < input.size(); ++ i){
if(regex_search(input[i].begin(), input[i].end(), re)){
output.push_back(input[i]);
}
}
}
int main(int argc, char* argv[])
{
vector<string> testCases;
testCases.push_back("Dauresselam");
testCases.push_back("slab");
testCases.push_back("fuss");
testCases.push_back("boolean");
testCases.push_back("clap");
cout << "The testCases is " << endl;
copy(testCases.begin(), testCases.end(), ostream_iterator<string>(cout, ", "));
cout << endl;
vector<string> output;
FindRepetiveCharString(testCases, output);
cout << "The output is " << endl;
copy(output.begin(), output.end(), ostream_iterator<string>(cout, ", "));
cout << endl;
return 0;
}
Output
The testCases is
Dauresselam, slab, fuss, boolean, clap,
The output is
Dauresselam, fuss, boolean,
Press any key to continue . . .