-3
#include<bits/stdc++.h>
#define ASCII_SIZE 256
using namespace std;
char getMaxOccuringChar(char* str)
{
int count[ASCII_SIZE] = {0};
// Construct character count array from the input
// string.
int len = strlen(str);
for (int i=0; i<len; i++)
count[str[i]]++;
// can someone please explain me this for loop
int max = -1; // Initialize max count
char result; // Initialize result
// Traversing through the string and maintaining
// the count of each character
for (int i = 0; i < len; i++) {
if (max < count[str[i]]) {
max = count[str[i]];
result = str[i];
}
}
return result;
}
デバッガで実行し、文字列内の文字を1ステップずつ進めながら、 'count []'配列の値を調べます。そうしている間、この関数の* 2 *ループの無意味さを考えてみてください。これは達成しようとしているすべてのもので十分です。 – WhozCraig
int len = strlen(str); - 文字列内の合計文字。文字列をループし、一意の文字セットごとにカウントするカウンタを設定します。キャラクタの各インスタンスについて、そのカウンタをインクリメントします。 –
このプログラムはUBを展示しています。文字が署名されている場合はどうなりますか? –