//请实现下面的函数,输入参数baseStr是一个(可以更改的)字符串,请将其中所有连续出现的多个空格都替换成一个空格,单一空格需保留。 //请直接使用baseStr的空间,如需开辟新的存储空间,不能超过o(N)(注意是小o,N是字符串的长度)。返回值是替换后的字符串的长度。 //样例代码为C#,但可以使用任何语言。如需使用任何库函数,必须同时给出库函数的实现。 class Program { public static int RemoveMultipleSpaces(char[] baseStr) { if (baseStr == null) { throw new ArgumentNullException("baseStr"); } int writeCursor = 0; bool isLastCharSpace = false; for (int i = 0; i < baseStr.Length; i++) { char current = baseStr[i]; if (current == ' ') { if (!isLastCharSpace) { isLastCharSpace = true; baseStr[writeCursor++] = current; } } else { isLastCharSpace = false; baseStr[writeCursor++] = current; } } return writeCursor; } } //样例测试程序(请自行补充更多的测试案例) [TestFixture] public class ScannersTest { [Test] public void RemoveOneInnterSpaceBlockTest() { char[] input = "abc def".ToCharArray(); int resultLength = Program.RemoveMultipleSpaces(input); Assert.AreEqual(7, resultLength); Assert.AreEqual("abc def", new string(input, 0, resultLength)); } [Test] public void RemoveTwoInnterSpaceBlocksTest() { char[] input = "abc def ghi".ToCharArray(); int resultLength = Program.RemoveMultipleSpaces(input); Assert.AreEqual(11, resultLength); Assert.AreEqual("abc def ghi", new string(input, 0, resultLength)); } [Test] public void KeepSingleSpaceTest() { char[] input = " a b d e ".ToCharArray(); int resultLength = Program.RemoveMultipleSpaces(input); Assert.AreEqual(9, resultLength); Assert.AreEqual(" a b d e ", new string(input, 0, resultLength)); } [Test] public void AllSpacesTest() { char[] input = " ".ToCharArray(); int resultLength = Program.RemoveMultipleSpaces(input); Assert.AreEqual(1, resultLength); Assert.AreEqual(" ", new string(input, 0, resultLength)); } }