Last Updated on May 18, 2022 by Ria Pathak
Concepts Used:
Strings, Basic Mathematics
Difficulty Level:
Easy
Problem Statement (Simplified):
Print the maximum length of string which can be formed such that the number of
a
is more than half of its total length. You can form new string by removing characters from given string.
See original problem statement here
Test Case:
Input:
1
xaxxxxa
Output:
3
Explanation:
Here string is of length 7 and there are 2 a's in the string.
If we want a's to be more than half, we'll add 1 extra character, so the length of the smallest string would be 3.
Solving Approach :
1) We can solve it by counting the number of appearances of a
.
2) If the count is already more than half we don’t have to delete any character, the string’s current length is already at maximum.
3) If the count is less than half, Let’s say the count of a
be C
. So, maximum length of string will be ( 2 x ( C – 1 ) ) + 1.
Example:
- Assuming string to be ‘
astrangeanalogy
‘, having length15
and there are4
a
‘s in the string. So we would need a string containing4
a
‘s.- As the count of
a
‘s in the new string should be more than half, which means if we remove onea
from the number ofa
‘s in new string, size of new string will be double of the number ofa
‘s in new string. So we add a singlea
we removed earlier . So we use this and we find that size of the string will be7
.
minSize = ((countOfA - 1) x 2) + 1
Solutions:
#include <stdio.h> #include<string.h> int main() { int test; scanf("%d", &test); while(test--){ char s[10000000]; scanf("%s", s); int count=0; for(int i=0; i<strlen(s); i++)="" if(s[i]="='a')" count++;="" if(count=""> strlen(s)/2) printf("%d\n",strlen(s)); else{ printf("%d\n",(count-1)*2 + 1); } } }
#include <bits/stdc++.h> using namespace std; int main() { int test; cin>>test; while(test--){ string s; cin>>s; int count=0; for(int i=0; i<s.length(); i++) if(s[i]=='a') count++; if(count > s.length()/2) cout<<s.length()<<endl; else{ cout<<(count-1)*2 + 1<<endl; } } }
import java.util.*; import java.io.*; public class Main { public static void main(String args[]) throws IOException { Scanner sc= new Scanner(System.in); int test_cases; test_cases = sc.nextInt(); while(test_cases != 0){ String s = sc.next(); int count=0; for(int i=0; i<s.length(); i++)="" if(s.charat(i)="='a')" count++;="" if(count=""> s.length()/2) System.out.println(s.length()); else{ System.out.println((count-1)*2 + 1); } test_cases--; } } }
for _ in range(int(input())): s = input() count = 0 for i in range(len(s)): if s[i] == "a": count +=1 if count > len(s) // 2: print(len(s)) else: print((count-1) * 2 + 1)
[forminator_quiz id="966"]
This article tried to discuss Strings, Basic Mathematics. Hope this blog helps you understand and solve the problem. To practice more problems on Strings, Basic Mathematics you can check out MYCODE | Competitive Programming.