回文判断编程练习:如何忽略空格将字符串存入字符数组?
解决回文判断中忽略空格的问题
嘿,我来帮你搞定这个空格的问题~
你当前代码的核心问题是:你创建的charArray长度和原输入字符串完全一致,当遇到空格用continue跳过的时候,数组中对应的位置并没有被赋值,会保留char类型的默认值(也就是空字符'\0'),最后转成字符串时这些空字符会被保留,看起来就像空格还在一样。
这里给你两种简单的解决办法:
方法一:用动态列表存储非空格字符
用List<char>来动态添加不需要过滤的字符,这样就不用提前固定数组长度,避免空字符的问题:
Console.Write("Insert string: "); string input = Console.ReadLine(); List<char> charList = new List<char>(); for (int i = 0; i < input.Length; i++) { if (!Char.IsWhiteSpace(input, i)) { charList.Add(input[i]); } } string original = new string(charList.ToArray());
方法二:用LINQ简化过滤(更简洁)
如果你熟悉LINQ的话,可以一行代码完成空格过滤,代码更简洁易懂:
Console.Write("Insert string: "); string input = Console.ReadLine(); string original = new string(input.Where(c => !Char.IsWhiteSpace(c)).ToArray());
额外小建议
另外,判断回文的时候通常需要忽略大小写(比如"A man a plan a canal Panama"应该被判定为回文),你可以在过滤空格后把字符串统一转成小写或大写:
string processed = original.ToLower(); // 然后用processed来做回文判断
内容的提问来源于stack exchange,提问作者Jesse Kämäräinen
相关产品推荐
相关产品推荐

