求字符串相关的算法

BMWBMWBMWBMWBMWBMW 2009-04-20 08:19:41
给定一字符串aabbbbcddd
1,输出字符串中相邻的相同字符,结果abcd
2,输出相邻字符个数,结果a2b4c1d3
3,输出插入字符的个数,结果aa2bbbb4c1ddd3
4,字符串倒转,结果dddcbbbbaa

一口气想了好几个,哈哈。正确者都有分,不够在加
...全文
145 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuyanp 2009-04-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yangqidong 的回复:]
string s="aabbbbcddd";
s = new string( s.ToCharArray().Reverse().ToArray());
Console.WriteLine(s);
输出 dddcbbbbaa
[/Quote]
神风凌 2009-04-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yangqidong 的回复:]
string s="aabbbbcddd";
s = new string( s.ToCharArray().Reverse().ToArray());
Console.WriteLine(s);
输出 dddcbbbbaa
[/Quote]


就这个。。。字符串倒序
pennymay 2009-04-21
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 LemIST 的回复:]
引用楼主 BMWBMWBMWBMWBMWBMW 的帖子:
给定一字符串aabbbbcddd
1,输出字符串中相邻的相同字符,结果abcd
2,输出相邻字符个数,结果a2b4c1d3
3,输出插入字符的个数,结果aa2bbbb4c1ddd3
4,字符串倒转,结果dddcbbbbaa

一口气想了好几个,哈哈。正确者都有分,不够在加

C# codestringtestStr="abbcccddddeeeee";
Console.WriteLine(testStr);//1Console.Write(testStr[0]);for(inti=1; i<testStr.Length; i…
[/Quote]

顶你
我姓区不姓区 2009-04-20
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 wuyi8808 的回复:]
引用 10 楼 vrhero 的回复:
string r4 = new string(s.ToCharArray().Reverse().ToArray());


应该是:
C# codepublicstaticstringReverse(strings)
{char[] charArray=s.ToCharArray();
Array.Reverse(charArray);returnnewstring(charArray);
}
因为 Array.Reverse() 是静态方法。
[/Quote]
在3.5中是有这个扩展方法的
vrhero 2009-04-20
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 wuyi8808 的回复:]
引用 10 楼 vrhero 的回复:
string r4 = new string(s.ToCharArray().Reverse().ToArray());


应该是:

C# codepublic static string Reverse(string s)
{
char[] charArray = s.ToCharArray();
Array.Reverse(charArray);
return new string(charArray);
}


因为 Array.Reverse() 是静态方法。
[/Quote]
你为什么不试试呢...这是Linq的扩展方法不是Array的方法...
llsen 2009-04-20
  • 打赏
  • 举报
回复
好主意 ,顶
wuyi8808 2009-04-20
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 vrhero 的回复:]
string r4 = new string(s.ToCharArray().Reverse().ToArray());
[/Quote]

应该是:
public static string Reverse(string s)
{
char[] charArray = s.ToCharArray();
Array.Reverse(charArray);
return new string(charArray);
}

因为 Array.Reverse() 是静态方法。
tang_fu 2009-04-20
  • 打赏
  • 举报
回复
string testStr = "abbcccddddeeeee";
Console.WriteLine(testStr);
//1
Console.Write(testStr[0]);
for (int i = 1; i < testStr.Length; i++)
if (testStr[i] != testStr[i - 1])
Console.Write(testStr[i]);
Console.WriteLine();
//2
for(int i = 0; i < testStr.Length; i++)
{
Console.Write(testStr[i]);
int j = i + 1;
for (; j < testStr.Length; j++)
if (testStr[j] != testStr[i])
break;
Console.Write(j - i);
i = j - 1;
}
Console.WriteLine();
//3
for (int i = 0; i < testStr.Length; i++)
{
Console.Write(testStr[i]);
int j = i + 1;
for (; j < testStr.Length; j++)
{
if (testStr[j] != testStr[i])
break;
Console.Write(testStr[j]);
}
Console.Write(j - i);
i = j - 1;
}
//4
Console.WriteLine();
for (int i = testStr.Length - 1; i >= 0; i--)
Console.Write(testStr[i]);
Console.WriteLine();
我姓区不姓区 2009-04-20
  • 打赏
  • 举报
回复

string str = "aabbbbcdddaabbbbcddd";
List<char> list = new List<char>();
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[] { new DataColumn("C1", typeof(char)), new DataColumn("C2", typeof(int)) });
list.Add(str[0]);
dt.Rows.Add(str[0], 1);
for (int i = 1; i < str.Length; i++)
{
char c1 = str[i];
char c2 = str[i - 1];
if (c1 != c2)
{
list.Add(c1);
dt.Rows.Add(c1, 1);
}
else
{
dt.Rows[dt.Rows.Count - 1][1] = Convert.ToInt32(dt.Rows[dt.Rows.Count - 1][1]) + 1;
}
}
Console.WriteLine(new string(list.ToArray()));
Console.WriteLine("----------------------------");
StringBuilder sb = new StringBuilder();
StringBuilder sb2 = new StringBuilder();
foreach (DataRow dr in dt.Rows)
{
sb.Append(dr[0].ToString() + dr[1].ToString());
sb2.Append(new string(Convert.ToChar(dr[0]), Convert.ToInt32(dr[1])) + dr[1].ToString());
}
Console.WriteLine(sb.ToString());
Console.WriteLine("----------------------------");
Console.WriteLine(sb2.ToString());
Console.WriteLine("----------------------------");
char[] cArray = str.ToCharArray();
Array.Reverse(cArray);
Console.WriteLine(new string(cArray));
sushou2009 2009-04-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 LemIST 的回复:]
引用楼主 BMWBMWBMWBMWBMWBMW 的帖子:
给定一字符串aabbbbcddd
1,输出字符串中相邻的相同字符,结果abcd
2,输出相邻字符个数,结果a2b4c1d3
3,输出插入字符的个数,结果aa2bbbb4c1ddd3
4,字符串倒转,结果dddcbbbbaa

一口气想了好几个,哈哈。正确者都有分,不够在加


C# codestring testStr = "abbcccddddeeeee";
Console.WriteLine(testStr);
//1
Console.Write(te…
[/Quote]
UP
jianfeidahai 2009-04-20
  • 打赏
  • 举报
回复
1 Console.WriteLine("请输入字符串");
string m = Console.ReadLine(),str1;
int n = m.Length,t=0;
string[] zifuchu = new string[n];
for (int i = 0; i <= n - 1; i++)
{
str1 = m.Substring(i, 1);
zifuchu[i] = str1;
}
Console.Write(zifuchu[0]);
int k=1;
for ( k = 1; k < n; k++)
{

if (zifuchu[k] != zifuchu[k - 1])
{
Console.Write(zifuchu[k]);
}
}
4 Console.WriteLine("请输入字符串");
string m = Console.ReadLine(),str1;
int n = m.Length,t=0;
string[] zifuchu = new string[n];
for (int i = 0; i <= n - 1; i++)
{
str1 = m.Substring(i, 1);
zifuchu[i] = str1;
}
Array.Reverse(zifuchu);
foreach (string y in zifuchu)
Console.Write(y);
vrhero 2009-04-20
  • 打赏
  • 举报
回复
这种问题用Linq做最简单也最简洁...
string s = "aabbbbcddd";

string r1 = new string(s.ToCharArray().Distinct().ToArray());

System.Text.StringBuilder sb = new System.Text.StringBuilder();
var q = s.ToCharArray().GroupBy(ss => ss);
foreach (var item in q)
{
sb.Append(item.Key);
sb.Append(item.Count());
}
string r2 = sb.ToString();

sb = new System.Text.StringBuilder();
foreach (var item in q)
{
sb.Append(item.Key, item.Count());
sb.Append(item.Count());
}
string r3 = sb.ToString();

string r4 = new string(s.ToCharArray().Reverse().ToArray());
teerhu 2009-04-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 LemIST 的回复:]
引用楼主 BMWBMWBMWBMWBMWBMW 的帖子:
给定一字符串aabbbbcddd
1,输出字符串中相邻的相同字符,结果abcd
2,输出相邻字符个数,结果a2b4c1d3
3,输出插入字符的个数,结果aa2bbbb4c1ddd3
4,字符串倒转,结果dddcbbbbaa

一口气想了好几个,哈哈。正确者都有分,不够在加


C# codestring testStr = "abbcccddddeeeee";
Console.WriteLine(testStr);
//1
Console.Write(te…
[/Quote]

支持
wuyq11 2009-04-20
  • 打赏
  • 举报
回复
1
public string GetS(string strInputData)
{
char[] chars = strInputData.ToCharArray();
string strOutputData="";
int iLength = chars.Length;
for(int i=0;i < iLength - 1;i++)
{
if(chars[i] != chars[i+1] )
{
strOutputData += chars[i].ToString();
}
}
strOutputData += chars[iLength -1].ToString();
return strOutputData;
}
LemIST 2009-04-20
  • 打赏
  • 举报
回复
[Quote=引用楼主 BMWBMWBMWBMWBMWBMW 的帖子:]
给定一字符串aabbbbcddd
1,输出字符串中相邻的相同字符,结果abcd
2,输出相邻字符个数,结果a2b4c1d3
3,输出插入字符的个数,结果aa2bbbb4c1ddd3
4,字符串倒转,结果dddcbbbbaa

一口气想了好几个,哈哈。正确者都有分,不够在加
[/Quote]
string testStr = "abbcccddddeeeee";
Console.WriteLine(testStr);
//1
Console.Write(testStr[0]);
for (int i = 1; i < testStr.Length; i++)
if (testStr[i] != testStr[i - 1])
Console.Write(testStr[i]);
Console.WriteLine();
//2
for(int i = 0; i < testStr.Length; i++)
{
Console.Write(testStr[i]);
int j = i + 1;
for (; j < testStr.Length; j++)
if (testStr[j] != testStr[i])
break;
Console.Write(j - i);
i = j - 1;
}
Console.WriteLine();
//3
for (int i = 0; i < testStr.Length; i++)
{
Console.Write(testStr[i]);
int j = i + 1;
for (; j < testStr.Length; j++)
{
if (testStr[j] != testStr[i])
break;
Console.Write(testStr[j]);
}
Console.Write(j - i);
i = j - 1;
}
//4
Console.WriteLine();
for (int i = testStr.Length - 1; i >= 0; i--)
Console.Write(testStr[i]);
Console.WriteLine();
TkingCN 2009-04-20
  • 打赏
  • 举报
回复
顶一下 接个分
wuyq11 2009-04-20
  • 打赏
  • 举报
回复
public static string Reverse(string str)
{
ArrayList r=new ArrayList();
foreach(Match m in Regex.Matchs(str,@"(\w+)|(\W+)"))
{
r.Add(m.Value);
}
r.Reverse();
return string.Concat({string[]}r.ToArray(typeof(string)));
}
yangqidong 2009-04-20
  • 打赏
  • 举报
回复
string s="aabbbbcddd";
s = new string( s.ToCharArray().Reverse().ToArray());
Console.WriteLine(s);
输出 dddcbbbbaa
freewind0521 2009-04-20
  • 打赏
  • 举报
回复

public String StrReversal(String oldString)
{
string result = string.Empty;
for (int i = oldString.Length - 1; i >= 0; i--)
result += oldString[i];
return result;
}


刚才错了
freewind0521 2009-04-20
  • 打赏
  • 举报
回复
4,字符串倒转

public String StrReversal(String oldString)
{
string result = string.Empty;
for (int i = oldString.Length - 1; i <= 0; i--)
result += oldString[i];
return result;
}
加载更多回复(1)

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧