HackerRank Two Characters Problem Solution Yashwant Parihar, April 23, 2023April 28, 2023 In this post, we will solve HackerRank Two Characters Problem Solution. Given a string, remove characters until the string is made up of any two alternating characters. When you choose a character to remove, all instances of that character must be removed. Determine the longest string possible that contains just two alternating letters.Examples = ‘abaacdabd’Delete a, to leave bcdbd. Now, remove the character c to leave the valid string bdbd with a length of 4. Removing either b or d at any point would not result in a valid string. Return 4. Given a strings, convert it to the longest possible string t made up only of alternating characters. Return the length of string t. If no string t can be formed, return 0. Function Description Complete the alternate function in the editor below. alternate has the following parameter(s): string s: a string Returns. int: the length of the longest valid string, or 0 if there are none Input Format The first line contains a single integer that denotes the length of s.The second line contains string s. Sample Input STDIN Function ----- -------- 10 length of s = 10 beabeefeab s = 'beabeefeab' Sample Output 5 ExplanationThe characters present in s are a, b, e, and f. This means that t must consist of two of those characters and we must delete two others. Our choices for characters to leave are [a,b], [a,e], [a, f], [b,e], [b, f] and [e, f].If we delete e and f, the resulting string is babab. This is a valid t as there are only two distinct characters (a and b), and they are alternating within the string.If we delete a and f, the resulting string is bebeeeb. This is not a valid string t becausethere are consecutive e’s present. Removing them would leave consecutive b’s, so this failsto produce a valid string t.Other cases are solved similarly.babab is the longest string we can create. HackerRank Two Characters Problem Solution Two Characters C Solution #include <math.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <assert.h> #include <limits.h> #include <stdbool.h> int testaxy(char x, char y, char*s) { int i=0, lx=1, ly=1, str=0; while (s[i]) { if (s[i] == x) if (ly) str++, ly=0, lx=1; else return 0; else if(s[i] == y) if (lx) str++, lx=0, ly=1; else return 0; i++; } if (str>1) return str; return 0; } int testastr(char x, char y, char*s, int*c) { if ( ((c[x-0x61]) == (c[y-0x61])) || ((c[x-0x61]) == (c[y-0x61]+1)) || ((c[x-0x61]) == (c[y-0x61]))) return (testaxy(x, y, s)); return 0; } int main(){ int len; scanf("%d",&len); char* s = (char *)malloc(512000 * sizeof(char)); scanf("%s",s); int c[26]; int maxstr = 0, lstrxy; for (int i=0; i<26 ; i++) c[i] = 0; /* zera contador de char */ for (int i=0; s[i]; i++) c[s[i]-0x61]++; /* conta char */ for (int x=0; x<26; x++) for (int y=0; y<26; y++) if (c[x] && c[y]) { /* par de char a analisar */ int lstrxy = testastr(x+0x61,y+0x61,s,c); if (lstrxy > maxstr) maxstr = lstrxy; } printf("%d", maxstr); return 0; } Two Characters C++ Solution #include <fstream> #include <iostream> #include <string> #include <complex> #include <math.h> #include <set> #include <vector> #include <map> #include <queue> #include <stdio.h> #include <stack> #include <algorithm> #include <list> #include <sstream> #include <ctime> #include <memory.h> #include <assert.h> #include <unordered_map> #include <limits.h> #include <bitset> #include <unordered_set> using namespace std; const long long bs = 1000000007; static const int INF = 0x3f3f3f3f; static const long long INFL = 0x3f3f3f3f3f3f3f3fLL; typedef long long ll; typedef unsigned long long ull; typedef pair<int, int> pii; typedef pair<ll, ll> pll; typedef vector<int> vi; typedef vector<ll> vll; typedef vector<vector<int> > vvi; #define REP(i, n) for (int i=0; i < (int)(n); ++i) #define pb push_back #define mp make_pair #define PI 3.14159265 struct cmp { bool operator()(int &a, int &b) { return a < b; } }; int main() { int n; cin >> n; string s; cin >> s; int ans = 0; for (int i = 0; i < 26; i++) { for (int j = 0; j < 26; j++) { if (i == j) continue; int len = 0; int next = i; for (int k = 0; k < s.size(); k++) { if (s[k] -'a' == next) { len++; next = (i==next) ? j : i; } else if (s[k] -'a' == ((i==next) ? j : i)) { len = 0; break; } } ans = max(len, ans); } } if ( ans == 1) ans = 0; cout << ans; return 0; } Two Characters C Sharp Solution using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text.RegularExpressions; class Solution { //static string char[] static void Main(String[] args) { Convert.ToInt32(Console.ReadLine()); string s = Console.ReadLine(); var cl = s.Distinct(); List<char> wl = cl.ToList(); List<char> bl = new List<char>(); int rl = 0; while(Regex.Match(s, @"(.)\1", RegexOptions.IgnoreCase).ToString() != "") { foreach(var c in wl) if(s.Contains(c.ToString() + c.ToString())) bl.Add(c); foreach(var c in bl) { s = s.Replace(c.ToString(),""); wl.Remove(c); } } //Console.WriteLine(s); if(cl.Count() - bl.Count() == 2) { rl = s.Length; } else { string ss = ""; for(int i = 0; i < wl.Count(); i ++) { for(int j = i+1; j < wl.Count(); j ++) { ss = s; foreach(char c in wl) { if(c != wl[i] && c != wl[j]) ss = ss.Replace(c.ToString(), ""); } if(Regex.Match(ss, @"(.)\1", RegexOptions.IgnoreCase).ToString() == "") if(rl < ss.Length) { rl = ss.Length; } } } } Console.WriteLine(rl); } } Two Characters Java Solution import java.io.*; import java.math.*; import java.security.*; import java.text.*; import java.util.*; import java.util.concurrent.*; import java.util.function.*; import java.util.regex.*; import java.util.stream.*; import static java.util.stream.Collectors.joining; import static java.util.stream.Collectors.toList; class Result { /* * Complete the 'alternate' function below. * * The function is expected to return an INTEGER. * The function accepts STRING s as parameter. */ public static int alternate(String s) { List<Character> chars = new ArrayList<>(); while(true){ List<Character> remove = new ArrayList<>(); char last = ' '; for(int i = 0; i < s.length(); i++){ char c = s.charAt(i); if(c == last){ remove.add(c); } else if(!chars.contains(c)){ chars.add(c); } last = c; } if(remove.size() == 0) break; for(char r : remove){ s = removeChar(s, r); chars.remove((Character)r); } } int len = chars.size(); boolean good = true; for(int i = 0; i < len; i++){ for(int j = i+1; j < len; j++){ char c1 = chars.get(i); char c2 = chars.get(j); String s2 = new StringBuilder(s).toString(); for(char c : chars){ if(c != c1 && c != c2) s2 = removeChar(s2, c); } char last = ' '; for(char c : s2.toCharArray()){ if(c == last){ good = false; break; } last = c; } if(good && s2.length() > maxString) maxString = s2.length(); good = true; } } //recurse(s, chars); return maxString; } static int maxString = 0; static void recurse(String s, List<Character> chars){ char last = ' '; for(char c : s.toCharArray()){ if(c == last) return; last = c; } if(chars.size() == 2){ if(s.length() > maxString) maxString = s.length(); return; } List<Character> chars2 = new ArrayList<>(chars); List<Character> used = new ArrayList<>(); for(char c : chars){ if(containsChar(s, c) && !used.contains(c)){ chars2.remove((Character)c); used.add(c); recurse(removeChar(s, c), chars2); chars2.add(c); } } } static boolean containsChar(String s, char c){ int l = s.length(); for(int i = 0; i < l; i++){ if(s.charAt(i) == c) return true; } return false; } static String removeChar(String s, char c){ StringBuilder sb = new StringBuilder(s); for(int i = 0; i < sb.length(); i++){ if(sb.charAt(i) == c){ sb.deleteCharAt(i); i--; } } return sb.toString(); } } public class Solution { public static void main(String[] args) throws IOException { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH"))); int l = Integer.parseInt(bufferedReader.readLine().trim()); String s = bufferedReader.readLine(); int result = Result.alternate(s); bufferedWriter.write(String.valueOf(result)); bufferedWriter.newLine(); bufferedReader.close(); bufferedWriter.close(); } } Two Characters JavaScript Solution process.stdin.resume(); process.stdin.setEncoding('ascii'); var input_stdin = ""; var input_stdin_array = ""; var input_currentline = 0; process.stdin.on('data', function (data) { input_stdin += data; }); process.stdin.on('end', function () { input_stdin_array = input_stdin.split("\n"); main(); }); function readLine() { return input_stdin_array[input_currentline++]; } /////////////// ignore above this line //////////////////// function main() { var len = parseInt(readLine()); var s = readLine(); //var s = 'mbmmbmbmbb' //var s = 'muqqzbcjmyknwlmlcfqjujabwtekovkwsfjrwmswqfurtpahkdyqdttizqbkrsmfpxchbjrbvcu'; //var s = 'bbbbeabeefeab'; var count = 0; var final_arr = {}; for (var i = 0; i < s.length; i++) { for (var a = i + 1; a < s.length; a++) { var one_arr = []; var new_count = 0; for (var e = 0; e < s.length; e++) { if (s[e] === s[i] || s[e] === s[a]) { new_count++; one_arr.push(s[e]); } } var check_invalidity = 0; if (one_arr) { for (var u = 0; u < one_arr.length; u++) { if (one_arr[u] == one_arr[u + 1]) { check_invalidity = 1; } } } if (check_invalidity == 0 && new_count > count) { count = new_count; final_arr = one_arr; } } } console.log(count); } Two Characters Python Solution n = int(input()) s = input() def check_valid(s): if len(s) >= 2: first = s[0] second = s[1] if first != second: for count, i in enumerate(list(s)): # print(count, i) if count%2 == 0: if i != first: return False else: if i != second: return False return True return False def replace_chain(s, lista): for l in lista: s = s.replace(l, '') return s to_delete = set(s) # print(to_delete) biggest = 0 for first in to_delete: for second in to_delete: if first!=second: new_to_delete = set(to_delete) new_to_delete.remove(first) new_to_delete.remove(second) new_s = replace_chain(s, new_to_delete) # print(new_s) if check_valid(new_s): if len(new_s) > biggest: biggest = len(new_s) # print(new_s) print(biggest) Other Solutions HackerRank Insertion Sort – Part 2 Solution HackerRank Correctness and the Loop Invariant c C# C++ HackerRank Solutions java javascript python CcppCSharpHackerrank Solutionsjavajavascriptpython