Вопрос 1. Введите с клавиатуры строку строчных букв (a~z).
Напишите программу фильтрации строк. Если в строке встречается несколько одинаковых символов, символы, которые не появляются в первый раз, будут отфильтрованы.
Например, результатом фильтрации строки «abacacde» будет «abcde».
Требуется для реализации функций:
Скопируйте код кода следующим образом:
void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr);
[Вход] pInputStr: входная строка
lInputLen: длина входной строки
[Выход] pOutputStr: выходная строка, пространство открыто и имеет ту же длину, что и входная строка;
[Примечание] Вам нужно только завершить алгоритм функции, и нет необходимости в каких-либо входах и выходах ввода-вывода посередине.
Пример
Ввод: «deefd» Выход: «def»
Ввод: «афафафаф» Вывод: «аф»
Ввод: «пппппппп» Вывод: «p»
Основная функция скрыта. Это тестовый вход, зарезервированный для пользователей. Здесь вы можете протестировать свою функцию реализации и вызвать printf, чтобы распечатать выходные данные.
В настоящее время вы можете использовать другие методы для тестирования, если вы убедитесь, что окончательная программа может выполняться правильно, реализацию функции можно изменить по своему желанию.
Но не меняйте прототип функции. Убедитесь, что это не повлияет на компиляцию и работу.
Вопрос 2: Описание вопроса:
Введите строку строчных букв (a~z) с клавиатуры. Напишите программу сжатия строк, которая сжимает последовательные повторяющиеся буквы в строке и выводит сжатую строку.
Правила сжатия:
1. Сжимайте только последовательно повторяющиеся символы. Например, поскольку строка «abcbc» не содержит последовательных повторяющихся символов, сжатая строка по-прежнему будет «abcbc».
2. Формат сжатого поля «количество повторов символов + символы». Например: строка «xxxyyyyyyz» после сжатия становится «3x6yz».
Требуется для реализации функций:
Скопируйте код кода следующим образом:
void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr);
[Вход] pInputStr: входная строка
lInputLen: длина входной строки
[Выход] pOutputStr: выходная строка, пространство открыто и имеет ту же длину, что и входная строка;
[Примечание] Вам нужно только завершить алгоритм функции, и нет необходимости в каких-либо входах и выходах ввода-вывода посередине.
Пример
Ввод: «ccdddecc» Вывод: «3c2de2c»
Ввод: «adef» Выход: «adef»
Ввод: «пппппппп» Выход: «8p»
Скопируйте код кода следующим образом:
тест публичного класса {
static void stringFilter(char InputStr[], long len, char OutputStr[]){
int[] a= новый int[26];
интервал число = 0;
int j=0;//OutputStr[] счетчик
for(int i=0;i<len;i++){
число = InputStr[i]-'a';
if(a[num]==0){//Не появилось
OutputStr[j]=InputStr[i];
j++;
а[число]=1;
}
}
}
static void stringZip( char InputStr[], long len, char OutputStr[]){
символ темп =' ';
интервал число = 1;
точка интервала = 0;
for(int i=0;i<len;i++){
если (InputStr[i]==temp){
число++;
}еще{
если(число!=1){
OutputStr[point++]=(char)(num+'0');
число=1;
}
OutputStr[point++]=temp;
temp=InputStr[i];
}
}
}
public static void main(String[] args) {
// TODO Автоматически сгенерированная заглушка метода
char [] test={'a','a','a','c','b','b','b','a','a','c','a', 'д','д','д','с','д','е'};
длинный len=test.length;
char [] res = новый char[(int) len];
stringFilter (тест, длина, разрешение);
int j=res.length;
for(int i=0;i<j;i++){
если(res[i]!='/0'){
System.out.print(res[i]);
}еще
перерыв;
}
char[] res2=новый символ[(int) (2*len)];
stringZip(тест,len,res2);
for(int i=0;i<2*len;i++){
если(res2[i]!='/0'){
System.out.print(res2[i]);
}еще
перерыв;
}
}
}