c++删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个
作者:野牛程序员:2023-12-04 20:20:12 C++阅读 2579
给定字符串(ASCII码0-255)数组,请在不开辟额外空间的情况下删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个。例如:” i am a little boy. “,变成” i am a little boy”,C++语言实现函数输入输岀:
#include <iostream> #include <cstring> void trimAndReduceSpaces(char* str) { // Trim leading spaces int start = 0; while (str[start] == ' ') { start++; } // Trim trailing spaces int end = strlen(str) - 1; while (end >= 0 && str[end] == ' ') { end--; } // Shift characters to remove leading spaces for (int i = 0; i <= end - start; i++) { str[i] = str[i + start]; } // Null-terminate the new string str[end - start + 1] = '\\0'; // Reduce multiple consecutive spaces to a single space int currentIndex = 0; bool previousSpace = false; for (int i = 0; i <= end - start; i++) { if (str[i] != ' ') { str[currentIndex] = str[i]; currentIndex++; previousSpace = false; } else if (!previousSpace) { str[currentIndex] = ' '; currentIndex++; previousSpace = true; } } // Null-terminate the final string str[currentIndex] = '\\0'; } int main() { char input[] = " i am a little boy. "; trimAndReduceSpaces(input); std::cout << input << std::endl; return 0; }
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892