如何制作字符串的下一步. C#
问题很复杂,但我会详细解释.
目标是创建一个函数,它将返回给定字符串的下一个“步骤”. 例如 String.Step("a"); // = "b" String.Step("b"); // = "c" String.Step("g"); // = "h" String.Step("z"); // = "A" String.Step("A"); // = "B" String.Step("B"); // = "C" String.Step("G"); // = "H" 直到这里它很容易,但考虑到输入IS字符串它可以包含多于1个字符,并且该函数必须像这样. String.Step("Z"); // = "aa"; String.Step("aa"); // = "ab"; String.Step("ag"); // = "ah"; String.Step("az"); // = "aA"; String.Step("aA"); // = "aB"; String.Step("aZ"); // = "ba"; String.Step("ZZ"); // = "aaa"; 等等… 这并不需要扩展基类String类. 我试图通过每个字符的ASCII值来解决这个问题,但是却遇到了包含2个字符的字符串. 如果有人能提供该功能的完整代码,我将非常感激. 提前致谢. 编辑 continuation of this function will be smth like this. for example n = 3 String.Step("aaa"); // = "aab"; String.Step("aaZ"); // = "aba"; String.Step("aba"); // = "abb"; String.Step("abb"); // = "abc"; String.Step("abZ"); // = "aca"; ..... String.Step("zzZ"); // = "zAa"; String.Step("zAa"); // = "zAb"; ........ 对不起我之前没有提到它,在读完一些答案之后我意识到这个问题有问题. 如果没有这个,该功能将始终在步骤结束后产生n次字符“a”. 解决方法
注意:这个答案是不正确的,因为“a”应该在“Z”之后……(见下面的评论)
这是一个可能有效的算法: 每个“字符串”表示给定基数的数字(此处:字母表中字母数的两倍). 因此,可以通过将“number”-string解析回int,添加1然后将其格式化回基数来计算下一步. 例: "a" == 1 -> step("a") == step(1) == 1 + 1 == 2 == "b" 现在,您的问题被简化为将字符串解析为给定基数的数字并重新格式化.快速谷歌搜索建议此页面:http://everything2.com/title/convert+any+number+to+decimal 怎么实现这个? >一个字母到它们对应数字的查找表:a = 1,b = 2,c = 3,… Y =?,Z = 0 >“ab” – > 2 * BASE ^ 0 1 * BASE ^ 1 编辑:这个链接看起来更有希望:http://www.citidel.org/bitstream/10117/20/12/convexp.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |