算法问题,如何计算子字符串在那个位置最为集中?

「已注销」 2009-10-09 10:14:38

string str = "“中国”一词最早出现是在周代《诗经》中,如《大雅•民劳》“惠此中国”。但《诗经》中的此类“中国”实为“国中”,还不是真正指国家。称国家的“中国”一词,在战国诸子百家的书中已屡见不鲜了。如《孟子•滕文公上》云:“陈良产地,悦周公仲尼之道,北学于中国”,又“兽蹄鸟迹之道,交于中国”;《庄子•田子方》:“中国之君子,明乎礼义而陋干知人心”……这些都说明:上古所谓“中国”,即指后世“中原”。但地域不及后世中原广,而相当于今山西、陕西、山东、河南、河北一带。中国中国中国
  “中国”一词的频繁使用,主要在周以后。《礼记•王制》有云:“中国夷戎,五方之民,皆有性也……中国、蛮、夷、戎、狄,皆有安。”十分明显,此时的“中国”一词,是与蛮、夷、戎、狄对举而使用的。如果说《礼记》的成书时间较靠后,则《左传•庄公三十一年》有“凡诸侯有四夷之功,则献于王,王以警于夷。中国则否”的说法,足见春秋前期,”中国”一词就已经与蛮、夷、戎、狄对举。那么"中国”指谁呢 《公羊传•禧公四年》称:“南夷与北狄交,中国不绝若线。桓公救中国而攘夷狄,卒荆,以此为王者之事也。”齐桓公救援邢国,卫国等国,被称作“救中国”,足见此时的”中国”,已经扩大到被认为是”诸夏”的国家。";
string input = "中国";

//计算str中input字符串出现最频繁的位置;显然str中"中国中国中国"出现的次数最为频繁;那么如何通过程序得到这个位置?

...全文
342 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
hrbwgs1111 2009-10-10
  • 打赏
  • 举报
回复
顶起
「已注销」 2009-10-10
  • 打赏
  • 举报
回复
结贴算了。9#的思想比较接近;而7#libinguest(风的足迹)和14# wartim(ilikeff8)的都曲解本意了(非连续的出现)感谢以上各位热心回答!
风之影子 2009-10-10
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 wartim 的回复:]
{public Form1()
{
string Result= String.Empty;while (str.IndexOf(Result+ input)>=0)
Result+= input;
MessageBox.Show("最集中:"+Result+"位置:"+str.IndexOf(Result).ToString());
}
}

[/Quote]



支持一下
chen_ya_ping 2009-10-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 lwp1493 的回复:]
C# codestring str="“中国”一词最早出现是在周代《诗经》中,如《大雅•民劳》“惠此中国”。但《诗经》中的此类“中国”实为“国中”,还不是真正指国家。称国家的“中国”一词,在战国诸子百家的书中已屡见不鲜了。如《孟子•滕文公上》云:“陈良产地,悦周公仲尼之道,北学于中国”,又“兽蹄鸟迹之道,交于中国”;《庄子•田子方》:“中国之君子,明乎礼义而陋干知人心”……这些都说明:上古所谓“中¡­
[/Quote]
可不可以这样,先记录下关键字的位置,然后在看看比如 1 4 789 15这样的话我们就知道789这个地方最频繁
Cherishny 2009-10-10
  • 打赏
  • 举报
回复
str中input字符串出现最频繁的位置;显然str中"中国中国中国"出现的次数最为频繁;那么如何通过程序得到这个位置?

t得到什么位置?
wartim 2009-10-10
  • 打赏
  • 举报
回复
再完善一下
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication82
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

string str = "“中国”一词最早出现是在周代《诗经》中,如《大雅•民劳》“惠此中国”。但《诗经》中的此类“中国”实为“国中”,还不是真正指国家。称国家的“中国”一词,在战国诸子百家的书中已屡见不鲜了。如《孟子•滕文公上》云:“陈良产地,悦周公仲尼之道,北学于中国”,又“兽蹄鸟迹之道,交于中国”;《庄子•田子方》:“中国之君子,明乎礼义而陋干知人心”……这些都说明:上古所谓“中国”,即指后世“中原”。但地域不及后世中原广,而相当于今山西、陕西、山东、河南、河北一带。中国中国中国“中国”一词的频繁使用,主要在周以后。《礼记•王制》有云:“中国夷戎,五方之民,皆有性也……中国、蛮、夷、戎、狄,皆有安。”十分明显,此时的“中国”一词,是与蛮、夷、戎、狄对举而使用的。如果说《礼记》的成书时间较靠后,则《左传•庄公三十一年》有“凡诸侯有四夷之功,则献于王,王以警于夷。中国则否”的说法,足见春秋前期,”中国”一词就已经与蛮、夷、戎、狄对举。那么“中国”指谁呢 《公羊传•禧公四年》称:“南夷与北狄交,中国不绝若线。桓公救中国而攘夷狄,卒荆,以此为王者之事也。”齐桓公救援邢国,卫国等国,被称作“救中国”,足见此时的”中国”,已经扩大到被认为是”诸夏”的国家。";
string input = "中国";

string Result = String.Empty;

while (str.IndexOf(Result + input) >= 0)
Result += input;
MessageBox.Show("最集中: "+Result+"位置: "+str.IndexOf(Result).ToString());
}
}
wartim 2009-10-10
  • 打赏
  • 举报
回复
有这么复杂吗。。。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication82
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

string str = "“中国”一词最早出现是在周代《诗经》中,如《大雅•民劳》“惠此中国”。但《诗经》中的此类“中国”实为“国中”,还不是真正指国家。称国家的“中国”一词,在战国诸子百家的书中已屡见不鲜了。如《孟子•滕文公上》云:“陈良产地,悦周公仲尼之道,北学于中国”,又“兽蹄鸟迹之道,交于中国”;《庄子•田子方》:“中国之君子,明乎礼义而陋干知人心”……这些都说明:上古所谓“中国”,即指后世“中原”。但地域不及后世中原广,而相当于今山西、陕西、山东、河南、河北一带。中国中国中国“中国”一词的频繁使用,主要在周以后。《礼记•王制》有云:“中国夷戎,五方之民,皆有性也……中国、蛮、夷、戎、狄,皆有安。”十分明显,此时的“中国”一词,是与蛮、夷、戎、狄对举而使用的。如果说《礼记》的成书时间较靠后,则《左传•庄公三十一年》有“凡诸侯有四夷之功,则献于王,王以警于夷。中国则否”的说法,足见春秋前期,”中国”一词就已经与蛮、夷、戎、狄对举。那么“中国”指谁呢 《公羊传•禧公四年》称:“南夷与北狄交,中国不绝若线。桓公救中国而攘夷狄,卒荆,以此为王者之事也。”齐桓公救援邢国,卫国等国,被称作“救中国”,足见此时的”中国”,已经扩大到被认为是”诸夏”的国家。";
string input = "中国";

string Result = String.Empty;

while (str.IndexOf(Result + input) >= 0)
Result += input;
MessageBox.Show(Result);
}
}
}
风之影子 2009-10-10
  • 打赏
  • 举报
回复
7楼的实现是否是楼主的需求
「已注销」 2009-10-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gomoku 的回复:]
C# code
.+++..........+.+.+.+.+......................++.++....
A-----------------
B---------------------------
C------------

最好先给“集中”明确定义。
比如例子中的3种分组法,得到的“最集中”的答案各不相同。
[/Quote]
在一定长度范围内;比如说100个连续字符中出现的次数
风之影子 2009-10-09
  • 打赏
  • 举报
回复
以上方法没有优化.建议使用泛型.


还有就是把下面这行删除了
//ArrayList alcount = new ArrayList();
风之影子 2009-10-09
  • 打赏
  • 举报
回复

/// <summary>
/// 查找字符串位置
/// </summary>
/// <param name="AllStr">文本</param>
/// <param name="FindStr">所要查找的字符串</param>
/// <returns>密集所在位置字符串</returns>
public static string Display(string AllStr,string FindStr)
{
ArrayList al = new ArrayList();
Regex reg = new Regex(FindStr);
Match ma = reg.Match(AllStr);
while (ma.Success)
{
ma = reg.Match(AllStr, ma.Index + ma.Length);
al.Add(ma.Index+1);
}
int[] ResultArray=(int[])al.ToArray(typeof(int));
Array.Sort(ResultArray);
int tempResult = 0,DisCount = 1 ,FirstStrCount=0,FirstCount=0;
ArrayList alcount = new ArrayList();
for (int count = 0; count < ResultArray.Length-1; count++)
{
if (ResultArray[count] + FindStr.Length == ResultArray[count + 1])
{
tempResult = ResultArray[count];
DisCount ++;
}
else
{
if (DisCount <= 1 || DisCount<FirstCount)
{
DisCount = 0;
}
else
{
FirstCount = DisCount;
FirstStrCount = tempResult+FindStr.Length;
DisCount = 0;
}
}
}
return Convert.ToString(FirstStrCount - FindStr.Length * FirstCount) + "~" + Convert.ToString(FirstStrCount + FindStr.Length);
}


简单调用:
            string str = "“中国”一词最早出现是在周代《诗经》中,如《大雅•民劳》“惠此中国”。但《诗经》中的此类“中国中国中国中国中国中国中国中国中国中国”实为“国中”,还不是真正指国家。称国家的“中国”一词,在战国诸子百家的书中已屡见不鲜了。如《孟子•滕文公上》云:“陈良产地,悦周公仲尼之道,北学于中国”,又“兽蹄鸟迹之道,交于中国”;《庄子•田子方》:“中国之君子,明乎礼义而陋干知人心”……这些都说明:上古所谓“中国”,即指后世“中原”。但地域不及后世中原广,而相当于今山西、陕西、山东、河南、河北一带。中国中国中国中国中国中国  “中国”一词的频繁使用,主要在周以后。《礼记•王制》有云:中国夷戎,五方之民,皆有性也……中国、蛮、夷、戎、狄,皆有安。”十分明显,此时的中国”一词,是与蛮、夷、戎、狄对举而使用的。如果说《礼记》的成书时间较靠后,则《左传•庄公三十一年》有凡诸侯有四夷之功,则献于王,王以警于夷。中国则否”的说法,足见春秋前期,中国”一词就已经与蛮、夷、戎、狄对举。那么中国”指谁呢 《公羊传•禧公四年》称:南夷与北狄交,中国不绝若线。桓公救中国而攘夷狄,卒荆,以此为王者之事也。”齐桓公救援邢国,卫国等国,被称作救中国”,足见此时的中国”,已经扩大到被认为是诸夏”的国家。";
string input = "中国";

MessageBox.Show("字符串出现最多的位置是" + Display(str, input));
_see_you_again_ 2009-10-09
  • 打赏
  • 举报
回复
��
jiyan1221 2009-10-09
  • 打赏
  • 举报
回复
用什么标准划分模块?返回整个模块的位置?
netstray 2009-10-09
  • 打赏
  • 举报
回复
顶一下!!
blestcc 2009-10-09
  • 打赏
  • 举报
回复
怎么分段是關鍵啊
gomoku 2009-10-09
  • 打赏
  • 举报
回复

.+++..........+.+.+.+.+......................++.++....
A --- --------- -----
B ---------------------- -----
C --- - - - - - -- --


最好先给“集中”明确定义。
比如例子中的3种分组法,得到的“最集中”的答案各不相同。
「已注销」 2009-10-09
  • 打赏
  • 举报
回复
relup 2009-10-09
  • 打赏
  • 举报
回复
想了一下,留个记号
wuyq11 2009-10-09
  • 打赏
  • 举报
回复
string str = "“中国”一词最早出现是在周代《诗经》中,如《大雅?民劳》“惠此中国”。但《诗经》中的此类“中国”实为“国中”,还不是真正指国家。称国家的“中国”一词,在战国诸子百家的书中已屡见不鲜了。如《孟子?滕文公上》云:“陈良产地,悦周公仲尼之道,北学于中国”,又“兽蹄鸟迹之道,交于中国”;《庄子?田子方》:“中国之君子,明乎礼义而陋干知人心”……这些都说明:上古所谓“中国”,即指后世“中原”。但地域不及后世中原广,而相当于今山西、陕西、山东、河南、河北一带。中国中国中国“中国”一词的频繁使用,主要在周以后。《礼记?王制》有云:“中国夷戎,五方之民,皆有性也……中国、蛮、夷、戎、狄,皆有安。”十分明显,此时的“中国”一词,是与蛮、夷、戎、狄对举而使用的。如果说《礼记》的成书时间较靠后,则《左传?庄公三十一年》有“凡诸侯有四夷之功,则献于王,王以警于夷。中国则否”的说法,足见春秋前期,”中国”一词就已经与蛮、夷、戎、狄对举。那么“中国”指谁呢 《公羊传?禧公四年》称:“南夷与北狄交,中国不绝若线。桓公救中国而攘夷狄,卒荆,以此为王者之事也。”齐桓公救援邢国,卫国等国,被称作“救中国”,足见此时的”中国”,已经扩大到被认为是”诸夏”的国家。";
string input = "中国";
for(int i = 0; i < str.Length; i ++)
{
int at = str.IndexOf(input, i);
if(at < 0)
{
break;
}
Console.Write(input + "@" + at);
i = at;
}

111,098

社区成员

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

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

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