CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

简单算法~~ 在BAIDU上看到的东东 大家一起来看下

楼主huruihappy()2006-12-01 13:26:58 在 .NET技术 / C# 提问

请用C#回答   调试通过就行   最基本的算法    
  1。现有文本1.txt   。1.txt文本   中包含字符"#","~".现在要写个程序输出   #和~之间的字符串,#和~之外的字符串用//XXXXX格式输出(有点像语法分析)比如说"   ~23ewr#asd   asd~ewerr#dwqr~121   "输出结果为:  
  //~23ewr   (有换行)  
  asd   asd  
  //ewerr  
  dwqr  
  //121  
   
  2。压缩.现有文本1.txt   里面只含数字0,1   现要对数字进行压缩,压缩方法如下   "0000111000101"压缩为(0,4)+(1,3)+(0,3)+(1,1)+(0,1)+(1,1)  
  这种形式输出。还原数据的方法也要写出  
  ~!~给出最简最正确算法就有分~~~~ 问题点数:30、回复次数:15Top

1 楼oldmoon(电子商务人,电子商务路)回复于 2006-12-01 13:35:21 得分 0

1。现有文本1.txt   。1.txt文本   中包含字符"#","~".现在要写个程序输出   #和~之间的字符串,#和~之外的字符串用//XXXXX格式输出(有点像语法分析)比如说"   ~23ewr#asd   asd~ewerr#dwqr~121   "输出结果为:  
  //~23ewr   (有换行)  
  asd   asd  
  //ewerr  
  dwqr  
  //121  
  ------------  
  用两次split就解决Top

2 楼alvachien(白衣战神,四大绝技:C#/C++/T-SQL/ABAP)回复于 2006-12-01 14:17:48 得分 0

1.   实用Regex的Split就可以了  
  2.   算法问题...Top

3 楼huruihappy()回复于 2006-12-03 22:50:29 得分 0

有人会不Top

4 楼SmallMummy(爬山真累人~!)回复于 2006-12-04 00:15:01 得分 5

1、用C#里面的正则就可以了     正则为(?<=~)[^~]*(?=#)  
  2、  
  while(condition)  
  {  
  读一个字符;  
  if   (等于前一个字符)  
  {  
  计数器+1;  
  }  
  else  
  {  
  计数器=1;  
  前一个字符=这个字符;  
  }  
  }  
  Top

5 楼litaoye()回复于 2006-12-04 00:19:01 得分 3

第二个压缩算法效率不够高呀。  
   
  0000111000101经过压缩后为:  
  (0,4)+(1,3)+(0,3)+(1,1)+(0,1)+(1,1)  
   
  不是0就是1的话,那么完全可以压缩成为  
  (0,4)+(3)+(3)+(1)+(1)+(1)Top

6 楼flameearth()回复于 2006-12-04 02:09:34 得分 0

第一题   最简单的方法~~~~~~~哈哈easy   啊  
  static   void   Main(string[]   args)  
                  {  
                          string   filename   =   "D:\\1.txt";  
                          FileStream   fs   =   File.OpenRead(filename);  
                          Byte[]   arr   =   new   byte[100];  
                          UTF8Encoding   data   =   new   UTF8Encoding(true);  
                          string   str   =   "";   //从文件中读取数据  
                          while   (fs.Read(arr,   0,   arr.Length)   >   0)  
                          {  
                                  str   =   data.GetString(arr);    
                          }  
                          char[]   ch;  
                          ch   =   str.ToCharArray();//将string写如到char[]  
                          int   i   =   0,   j   =   0;  
   
                          for   (i   =   0;   i   <   ch.Length;   i++)  
                          {  
                                  if   (ch[i]   ==   '~')  
                                          ch[i]   =   '\n';  
                          }  
   
                          for   (k   =   0;   k   <   ch.Length;   k++)  
                          {  
                                   
                                  if   (ch[k]   ==   '\n')  
                                  {  
                                          Console.Write("\n");  
                                          Console.Write("/");  
                                          Console.Write("/");  
                                          Console.Write("~");  
                                          k++;  
                                  }  
                                  if   (ch[k]   ==   '#')  
                                  {  
                                          Console.Write("\n");  
                                          k++;  
                                  }  
                                  Console.Write(ch[k]);  
                          }  
   
   
                          Console.Read();  
                  }Top

7 楼flameearth()回复于 2006-12-04 02:14:11 得分 20

上面那个没有换行,还有点小错,这个是真确的~~  
  上面那个没有换行,还有点小错,这个是真确的~~  
   
  static   void   Main(string[]   args)  
                  {  
                          string   filename   =   "D:\\1.txt";  
                          FileStream   fs   =   File.OpenRead(filename);  
                          Byte[]   arr   =   new   byte[100];  
                          UTF8Encoding   data   =   new   UTF8Encoding(true);  
                          string   str   =   "";  
                          while   (fs.Read(arr,   0,   arr.Length)   >   0)  
                          {  
                                  str   =   data.GetString(arr);  
                          }  
                          char[]   ch;  
                          ch   =   str.ToCharArray();  
                          int   i   =   0,   j   =   0,   k   =   0;  
                          for   (i   =   0;   i   <   ch.Length;   i++)  
                          {  
                                  if   (ch[i]   ==   '~')  
                                          ch[i]   =   '\n';  
                                //   if   (ch[i]   ==   '#')  
                                    //       ch[i]   =   '\n';  
                          }  
   
                          for   (k   =   0;   k   <   ch.Length;   k++)  
                          {  
                                   
                                  if   (ch[k]   ==   '\n')  
                                  {  
                                          Console.Write("\n");  
                                          Console.Write("\n");  
                                          Console.Write("/");  
                                          Console.Write("/");  
                                          Console.Write("~");  
                                          k++;  
                                  }  
                                  if   (ch[k]   ==   '#')  
                                  {  
                                          Console.Write("\n");  
                                          Console.Write("\n");  
                                          k++;  
                                  }  
                                  Console.Write(ch[k]);  
                          }  
   
   
                          Console.Read();  
                  }  
   
  上面那个没有换行,还有点小错,这个是真确的~~  
  Top

8 楼flameearth()回复于 2006-12-04 03:26:30 得分 0

第二题!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  
         
    using   System;  
          using   System.Collections.Generic;  
          using   System.Text;  
  using   System.IO;  
  using   System.Collections;  
  namespace   ConsoleApplication1  
  {  
          class   Program  
          {  
                  static   void   Main(string[]   args)  
                  {  
                          string   filename   =   "D:\\2.txt";  
                          FileStream   fs   =   File.OpenRead(filename);  
                          Byte[]   arr   =   new   byte[100];  
                          UTF8Encoding   data   =   new   UTF8Encoding(true);  
                          string   str   =   "";  
                          while   (fs.Read(arr,   0,   arr.Length)   >   0)  
                          {  
                                  str   =   data.GetString(arr);  
                          }  
                           
   
                          char[]   ch;  
                          ch   =   str.ToCharArray();  
   
                          ArrayList   Res   =   new   ArrayList();  
                          ArrayList   zero   =   new   ArrayList();  
                          ArrayList   one   =   new   ArrayList();  
                           
                          for   (int   i   =   0;   i   <   ch.Length;   i++)  
                          {  
                                  if   (ch[i]   ==   '0')  
                                  {  
                                          zero.Add(ch[i]);  
                                          if   (ch[i   +   1]   ==   '1')    
                                          {  
                                                  Res.Add("(0,");                              
                                                  Res.Add(zero.Count);  
                                                  Res.Add(")+");  
                                          }  
   
                                         
                                  }  
                                 
                                  if   (ch[i]   ==   '1')  
                                  {  
                                          one.Add(ch[i]);  
                                          if   (ch[i   +   1]   ==   '0')  
                                          {  
                                                  Res.Add("(1,");  
                                                  Res.Add(one.Count);  
                                                          Res.Add(")+");  
                                                   
                                          }  
                                  }  
                          }  
                          for   (int   k   =   0;   k   <   Res.Count;   k++)  
                          {  
                                  Console.Write(Res[k]);  
                          }  
                                  Console.Read();  
                  }  
          }  
  }Top

9 楼ycqing()回复于 2006-12-04 10:05:22 得分 0

?Top

10 楼huruihappy()回复于 2006-12-04 12:00:22 得分 0

6楼的第2个算法错了   结果不对哦```Top

11 楼huruihappy()回复于 2006-12-04 12:03:21 得分 0

using   System.Collections.Generic;?这个是什么?Top

12 楼huruihappy()回复于 2006-12-04 12:04:19 得分 0

010101010111压缩真做起累```想了N久``总是结果有点不对```Top

13 楼flameearth()回复于 2006-12-04 22:12:28 得分 0

第二个算法是对的,不过就是显示有点问题,只要稍加判断就可以了,我一会再改改现在有点事Top

14 楼zhaochong12(超级大笨鸟)回复于 2006-12-04 23:01:36 得分 2

///   从一个字符串的两个关键字中间得到内容          
  public   string   SubStr(string   str,   string   str1,   string   str2)  
          {  
                  int   start,   stop;  
                  start   =   str.IndexOf(str1,   0,   str.Length);  
                  stop   =   str.IndexOf(str2,   0,   str.Length);  
                  return   str.Substring(start   +   str1.Length,   stop   -   start   -   str1.Length);  
   
          }Top

15 楼cinray()回复于 2006-12-05 08:50:07 得分 0

markTop

相关问题

关键词

得分解答快速导航

  • 帖主:huruihappy
  • SmallMummy
  • litaoye
  • flameearth
  • zhaochong12

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo