String Basic Questions
Convert to lowercase
char toLowerCase(char ch) { // Check if the character is already in lowercase if(ch >= 'a' && ch <= 'z') return ch; // If it's lowercase, return it as is. else { // Convert uppercase letter to lowercase char temp = ch - 'A' + 'a'; return temp; // Return the lowercase version }}
Example:
char ch1 = 'A';char ch2 = 'm';char ch3 = 'Z';
// Call the function for each characterchar res1 = toLowerCase(ch1); // 'A' -> 'a'char res2 = toLowerCase(ch2); // 'm' -> 'm' (already lowercase)char res3 = toLowerCase(ch3); // 'Z' -> 'z'
Iterations:
- For
ch1 = 'A'
:- It is not lowercase (
'A' < 'a'
). - Convert it:
'A' - 'A' + 'a' = 'a'
. - Output:
'a'
.
- It is not lowercase (
- For
ch2 = 'm'
:- It is already lowercase (
'm' >= 'a' && 'm' <= 'z'
). - Return
'm'
as is. - Output:
'm'
.
- It is already lowercase (
- For
ch3 = 'Z'
:- It is not lowercase (
'Z' < 'a'
). - Convert it:
'Z' - 'A' + 'a' = 'z'
. - Output:
'z'
.
- It is not lowercase (
Get Length of String
int getLength(char name[]) { int count = 0; for(int i = 0; name[i] != '\0'; i++) { count++; }
return count;}
Reverse String
void reverse(char name[], int n) { int s = 0; // Start pointer int e = n - 1; // End pointer
// Continue swapping until the start pointer crosses the end pointer while (s < e) { swap(name[s++], name[e--]); // Swap and update pointers }}
Example:
char name[] = "hello";int n = 5; // Length of the stringreverse(name, n); // After reversing, name becomes "olleh"
Iterations:
- Initial Array:
['h', 'e', 'l', 'l', 'o']
s = 0
,e = 4
- Swap
name[0]
(h
) withname[4]
(o
). - Array after swap:
['o', 'e', 'l', 'l', 'h']
s
becomes1
,e
becomes3
.
- Second Iteration:
s = 1
,e = 3
- Swap
name[1]
(e
) withname[3]
(l
). - Array after swap:
['o', 'l', 'l', 'e', 'h']
s
becomes2
,e
becomes2
.
- Termination:
s = 2
,e = 2
- Since
s
is no longer less thane
, the loop terminates.
- Final Output:
The reversed array is:
"olleh"
.
Check String is Palindrome or not
bool checkPalindrome(char a[], int n) { int s = 0; // Start pointer int e = n - 1; // End pointer // Loop until the pointers meet or cross each other while (s <= e) { // Convert characters to lowercase and compare them if (toLowerCase(a[s]) != toLowerCase(a[e])) { return 0; // Return false if any mismatch is found } else { // Move both pointers towards the center s++; e--; } } // If the loop completes without mismatches, it's a palindrome return 1; // Return true}
Example:
char str[] = "Madam";int n = 5; // Length of the stringbool result = checkPalindrome(str, n); // Result will be true (palindrome)
Iterations:
- Initial String:
"Madam"
- Start pointer:
s = 0
, End pointer:e = 4
\
- Start pointer:
Iterations:
- Compare
a[0]
(‘M’) anda[4]
(‘m’):- Convert both to lowercase:
toLowerCase('M') = 'm'
andtoLowerCase('m') = 'm'
. - Characters match → move s to 1 and e to 3.
- Convert both to lowercase:
- Compare
a[1]
(‘a’) anda[3]
(‘a’):- Convert both to lowercase:
toLowerCase('a') = 'a' and toLowerCase('a') = 'a'
. - Characters match → move
s
to 2 ande
to 2.
- Convert both to lowercase:
- Compare
a[2]
(‘d’) anda[2]
(‘d’):- Convert both to lowercase:
toLowerCase('d') = 'd'
. - Characters match → pointers now meet at the center (
s = 2, e = 2
).
- Convert both to lowercase:
Since all characters match, the function will return true
(1), indicating that the string is a palindrome.
Get Max occurrence character from string
char getMaxOccCharacter(string s) { int arr[26] = {0}; // Array to store the frequency of each character (26 lowercase letters) // Step 1: Count the occurrences of each character in the string for(int i = 0; i < s.length(); i++) { char ch = s[i]; int number = ch - 'a'; // Convert the character to its index (0 for 'a', 1 for 'b', etc.) arr[number]++; // Increment the frequency for that character } // Step 2: Find the character with the maximum occurrence int maxi = -1; // Variable to store the maximum frequency found int ans = 0; // Variable to store the index of the most frequent character for(int i = 0; i < 26; i++) { if(maxi < arr[i]) { ans = i; // Update the index of the most frequent character maxi = arr[i]; // Update the maximum frequency value } } // Step 3: Convert the index back to the corresponding character and return it return 'a' + ans; // Convert the index back to a character ('a' + 0 = 'a', 'a' + 1 = 'b', etc.)}
Example:
string s = "character";char result = getMaxOccCharacter(s); // Result will be 'c'
- Initial string: “character”
Step 1: Counting frequencies
- The frequency of each character in “character” is:
- ‘c’: 2 occurrences
- ‘h’: 1 occurrence
- ‘a’: 2 occurrences
- ‘r’: 2 occurrences
- ‘t’: 1 occurrence
- ‘e’: 1 occurrence Array after counting frequencies:
arr[] = {2, 0, 2, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0}// Indices correspond to 'a' through 'z'
Step 2: Finding the maximum occurrence
- The function finds the maximum frequency is 2, which occurs at index 2 (for ‘c’).
Step 3: Returning the result
- The function returns ‘c’ as it is the most frequent character.
Output:
Result: 'c'