关于老赵微博得一道题的解法



给出一种解决方案如下:
internal class ConvertTool{static Random mRad = new Random();const int ConvertMinLength = 4;private static char[] SplitChars = new[] { ' ', ',', '.', '!' };/// /// 转换/// /// /// public static string ConverText(string textString){int textLength = textString.Length;var firstSplitCharIndex = textString.IndexOfAny(SplitChars);if (firstSplitCharIndex < ConvertMinLength){return textString;}StringBuilder stringBuilder = new StringBuilder(textString);int startRandomIndex = 1;const int randomStep = 2;var splitCharIndex = firstSplitCharIndex;while (splitCharIndex != -1 && splitCharIndex < textLength){ConvertWordToRandom(stringBuilder, startRandomIndex, splitCharIndex - randomStep);startRandomIndex = splitCharIndex + randomStep;splitCharIndex = textString.IndexOfAny(SplitChars, splitCharIndex + 1);Console.WriteLine("splitCharIndex-{0},startRandomIndex-{1}", splitCharIndex, startRandomIndex);}return stringBuilder.ToString();}/// /// 打乱某个单词/// /// /// /// static void ConvertWordToRandom(StringBuilder sb, int startIndex, int endIndex){if (startIndex >= endIndex){return;}var sourceIndex = startIndex;var validateLength = endIndex - startIndex;while (validateLength > 1){var targetIndex = mRad.Next(validateLength) + sourceIndex;SwitchToChar(sb, sourceIndex, targetIndex);sourceIndex++;validateLength = endIndex - sourceIndex;}}/// /// 替换指定两个位置的字符/// /// /// /// private static void SwitchToChar(StringBuilder sb, int sourceIndex, int targetIndex){if (sourceIndex == targetIndex || sourceIndex < 0 || sourceIndex >= sb.Length || targetIndex < 0 || targetIndex >= sb.Length){return;}char tempChar = sb[targetIndex];sb[targetIndex] = sb[sourceIndex];sb[sourceIndex] = tempChar;}}

  

转载于:https://www.cnblogs.com/ccchai/archive/2012/11/05/2755715.html


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部