我这样做,但它删除字符串之前的字符,它的输出是(魔术,Agic,Gic,Ic,C),但我希望整个字符串是前后连接。
public string[] Transform(string st)
{
string[] arr = new string[st.Length];
string[] arr1 = new string[st.Length];
for (int x = 0; x < st.Length; x++)
{
arr1[x] = char.ToLower(st[x]) + "".ToString();
}
for (int i = 0; i < st.Length; i++)
{
string st1 = "";
{
st1 = char.ToUpper(st[i]) + st.Substring(i + 1);
}
arr[i] = st1;
}
return arr;
}发布于 2018-07-30 02:48:28
你忘了添加字符串的左边部分。试着这样做:
st1 = st.ToLower().Substring + char.ToUpper(sti) + st.Substring(i + 1);
发布于 2018-07-30 04:13:13
我决定放一个小分析器来检查CPU和内存的使用情况,并与@Ron Beyer的答案进行比较。
这是我的第一次尝试:
public static void Main()
{
var result = Transform("abcde");
result.ToList().ForEach(WriteLine);
}
public static IEnumerable<string> Transform(string str)
{
foreach (var w in str)
{
var split = str.Split(w);
yield return split[0] + char.ToUpper(w) + split[1];
}
}结果:
Abcde
aBcde
abCde
abcDe
abcdE代码小提琴
上面的代码有一个很大的缺点,只有当传递的单词有唯一的字母时,它才能工作。因此,"aaaaa“不会产生正确的结果。
public static void Main() { var IEnumerable = Transform("aaaaa");.ForEach().ForEach(WriteLine);} public static IEnumerable Transform(string str) { var result = new StringBuilder(str.ToLower());for( int i= 0;i< str.Length;i++) { resulti = char.ToUpper(stri);yield result.ToString();resulti = char.ToLower(stri);}}
结果:
Aaaaa aAaaa aaAaa aaaAa aaaaA
代码纠缠:
我将使用dotnetfiddle.net状态面板,以使其更容易。Fiddle有很少的限制,如代码执行时间10秒和使用的内存
此外,差异是非常显着的。我测试了14000次重复的程序,我的代码还将输出更改为array[]。
- My answer ([https://dotnetfiddle.net/1fLVw9](https://dotnetfiddle.net/1fLVw9))上次运行时间: 12:23:09 pm编译: 0.046s执行: 7.563s内存:16.22 12 CPU: 7.609s
-比较答案(https://dotnetfiddle.net/Zc88F2)
编译: 0.031s执行: 9.953s内存:16.22 CPU: 9.938s
它略微减少了执行时间。希望这能有所帮助!
发布于 2018-07-30 14:44:41
这里。这比使用字符串构建器和列表的方法快两倍
public static string[] Transform(string str)
{
var strs = new string [str.Length];
var sb = str.ToCharArray();
char oldCh;
for (int i = 0; i < str.Length; i++)
{
oldCh = sb[i];
sb[i] = char.ToUpper(sb[i]);
strs[i] = new string (sb);
sb[i] = oldCh;
}
return strs;
}没有必要清除并一直将字符串读到字符串构建器中。我们还知道数组的大小,以便可以在开始时分配。
https://stackoverflow.com/questions/51583377
复制相似问题