如何获取连续为错三次且第四次为对的记录,

tianwei76 2018-04-05 10:35:46
ID 结果
163224 错
163223 错
163222 错
163221 错
163220 错
163219 错
163218 错
163217 对
163216 对
163215 错
163214 错
163213 对
163212 对
163211 对
163210 对
163209 对
163208 错
163207 对
163206 错
163205 错
163204 错
163203 错
163202 对
163201 错
163200 对
163199 错
163198 对
163197 对
163196 错
163195 错
163194 对
163193 对
163192 错
163191 对
163190 对
163189 错
163188 错
163187 错
163186 对

163185 对
163184 错
163183 错
163182 错
163181 错
163180 错
163179 错
163178 对
163177 错
163176 错
163175 对
163174 对
163173 错
163172 对
163171 对
163170 错
163169 对
163168 对
163167 错
163166 对
163165 错
163164 对
163163 对
163162 对
163161 对
163160 错
163159 错
163158 错
163157 错
163156 对
163155 对
163154 错
163153 错
163152 对
163151 错
163150 对
163149 错
163148 错
163147 对
163146 对
163145 错
163144 错
163143 错
163142 对

163141 对
163140 对
163139 错
163138 对
163137 错
163136 错
163135 对
163134 错
163133 错
163132 错
163131 对

163130 错
163129 错
163128 错
163127 对

163126 错
163125 错
163124 错
163123 错
163122 错
163121 对
163120 错
163119 错
163118 错
163117 错
163116 对
163115 对
163114 对
163113 错
163112 对
163111 错
163110 对
163109 错
163108 对
163107 对
163106 错
163105 错
163104 对
163103 错
163102 对
163101 对
163100 对
163099 对
163098 错
163097 对
163096 对
163095 错
163094 错
163093 错
163092 错
163091 对
163090 对
163089 错
163088 对
163087 对
163086 错
163085 错
163084 错
163083 错
163082 对
163081 错
163080 对
163079 错
163078 错
163077 对
163076 对
163075 错
163074 错
163073 错
163072 错
163071 错
163070 错
163069 对
163068 对
163067 错
163066 错
163065 错
163064 对

163063 错
163062 错
163061 错
163060 错
163059 错
163058 错
163057 错
163056 对
163055 对
163054 错
163053 对
163052 对
163051 错
163050 对
163049 错
163048 错
163047 对
163046 对

如上图红色标示出来的部分。
只查三条,多于三条不用。统计出出现的次数,如上的就为5
...全文
249 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
bug狂人 2018-04-06
  • 打赏
  • 举报
回复
看了一下二楼三楼的也对,比我的还简单不过我俩都缺少一个判断,要么总长度减4,要么if前判断总长度减4
bug狂人 2018-04-06
  • 打赏
  • 举报
回复
第一层的length就是data.length
bug狂人 2018-04-06
  • 打赏
  • 举报
回复
对不起,昨晚的思路不对,应该写两层循环
string str=“”;
int index=0;
for(int i=0;i<length;i++)
{
for(int j=0;j<4;j++)
{
str+= data[i+j];
if(j==3&&str=="错错错对")
{
index++;
}
}
}
收工。
  • 打赏
  • 举报
回复
有些属于简单的优化,例如
for(var i=0; i< source.Count - 4; i++)
{
    if (source[i] == "错" && source[i + 1] == "错" && source[i + 2] == "错" && source[i + 3] == "对")
    {
        result.Add(i);
        i = i +3;
    }
}
这类东西你在数据结构/算法课程中(例如有关字符串匹配的 KMP 算法)中学到。但是前提是,有些人确实是连 for 循环里边嵌入稍微复杂的2条逻辑判断语句都写不好,这就是缺乏训练的表现,说明他更多地是靠自学的东西(没有强化专业知识),许多花钱培训一年但是上错了学校的人经常在实习时表现这个问题。
  • 打赏
  • 举报
回复
首先按照基本逻辑来编程,不要纠结什么“优化”。例如大致是
var source = new List<string>();
source.Add("错");
//.....
var result = new List<int>();
for(var i=0; i< source.Count - 4; i++)
{
    if (source[i] == "错" && source[i + 1] == "错" && source[i + 2] == "错" && source[i + 3] == "对")
        result.Add(i);
}
赶紧找个地方真正学一下编程入门。这些都是业余爱好编程的人一开始学的,将来(2年之内)尽量再学点有关数据结构、算法等等专业课。
xuzuning 2018-04-06
  • 打赏
  • 举报
回复
教人就教到底,别派谱!因为你们的并不对
楼主要求的是只连续三次为错的,而不是其他
        static void Main(string[] args)
{
var source = new List<dynamic>()
{
new {Id = 163224, Val = "错" },
new {Id = 163223, Val = "错" },
new {Id = 163222, Val = "错" },
new {Id = 163221, Val = "错" },
new {Id = 163220, Val = "错" },
new {Id = 163219, Val = "错" },
new {Id = 163218, Val = "错" },
new {Id = 163217, Val = "对" },
new {Id = 163216, Val = "对" },
new {Id = 163215, Val = "错" },
new {Id = 163214, Val = "错" },
new {Id = 163213, Val = "对" },
new {Id = 163212, Val = "对" },
new {Id = 163211, Val = "对" },
new {Id = 163210, Val = "对" },
new {Id = 163209, Val = "对" },
new {Id = 163208, Val = "错" },
new {Id = 163207, Val = "对" },
new {Id = 163206, Val = "错" },
new {Id = 163205, Val = "错" },
new {Id = 163204, Val = "错" },
new {Id = 163203, Val = "错" },
new {Id = 163202, Val = "对" },
new {Id = 163201, Val = "错" },
new {Id = 163200, Val = "对" },
new {Id = 163199, Val = "错" },
new {Id = 163198, Val = "对" },
new {Id = 163197, Val = "对" },
new {Id = 163196, Val = "错" },
new {Id = 163195, Val = "错" },
new {Id = 163194, Val = "对" },
new {Id = 163193, Val = "对" },
new {Id = 163192, Val = "错" },
new {Id = 163191, Val = "对" },
new {Id = 163190, Val = "对" },
new {Id = 163189, Val = "错" },
new {Id = 163188, Val = "错" },
new {Id = 163187, Val = "错" },
new {Id = 163186, Val = "对" },
new {Id = 163185, Val = "对" },
new {Id = 163184, Val = "错" },
new {Id = 163183, Val = "错" },
new {Id = 163182, Val = "错" },
new {Id = 163181, Val = "错" },
new {Id = 163180, Val = "错" },
new {Id = 163179, Val = "错" },
new {Id = 163178, Val = "对" },
new {Id = 163177, Val = "错" },
new {Id = 163176, Val = "错" },
new {Id = 163175, Val = "对" },
new {Id = 163174, Val = "对" },
new {Id = 163173, Val = "错" },
new {Id = 163172, Val = "对" },
new {Id = 163171, Val = "对" },
new {Id = 163170, Val = "错" },
new {Id = 163169, Val = "对" },
new {Id = 163168, Val = "对" },
new {Id = 163167, Val = "错" },
new {Id = 163166, Val = "对" },
new {Id = 163165, Val = "错" },
new {Id = 163164, Val = "对" },
new {Id = 163163, Val = "对" },
new {Id = 163162, Val = "对" },
new {Id = 163161, Val = "对" },
new {Id = 163160, Val = "错" },
new {Id = 163159, Val = "错" },
new {Id = 163158, Val = "错" },
new {Id = 163157, Val = "错" },
new {Id = 163156, Val = "对" },
new {Id = 163155, Val = "对" },
new {Id = 163154, Val = "错" },
new {Id = 163153, Val = "错" },
new {Id = 163152, Val = "对" },
new {Id = 163151, Val = "错" },
new {Id = 163150, Val = "对" },
new {Id = 163149, Val = "错" },
new {Id = 163148, Val = "错" },
new {Id = 163147, Val = "对" },
new {Id = 163146, Val = "对" },
new {Id = 163145, Val = "错" },
new {Id = 163144, Val = "错" },
new {Id = 163143, Val = "错" },
new {Id = 163142, Val = "对" },
new {Id = 163141, Val = "对" },
new {Id = 163140, Val = "对" },
new {Id = 163139, Val = "错" },
new {Id = 163138, Val = "对" },
new {Id = 163137, Val = "错" },
new {Id = 163136, Val = "错" },
new {Id = 163135, Val = "对" },
new {Id = 163134, Val = "错" },
new {Id = 163133, Val = "错" },
new {Id = 163132, Val = "错" },
new {Id = 163131, Val = "对" },
new {Id = 163130, Val = "错" },
new {Id = 163129, Val = "错" },
new {Id = 163128, Val = "错" },
new {Id = 163127, Val = "对" },
new {Id = 163126, Val = "错" },
new {Id = 163125, Val = "错" },
new {Id = 163124, Val = "错" },
new {Id = 163123, Val = "错" },
new {Id = 163122, Val = "错" },
new {Id = 163121, Val = "对" },
new {Id = 163120, Val = "错" },
new {Id = 163119, Val = "错" },
new {Id = 163118, Val = "错" },
new {Id = 163117, Val = "错" },
new {Id = 163116, Val = "对" },
new {Id = 163115, Val = "对" },
new {Id = 163114, Val = "对" },
new {Id = 163113, Val = "错" },
new {Id = 163112, Val = "对" },
new {Id = 163111, Val = "错" },
new {Id = 163110, Val = "对" },
new {Id = 163109, Val = "错" },
new {Id = 163108, Val = "对" },
new {Id = 163107, Val = "对" },
new {Id = 163106, Val = "错" },
new {Id = 163105, Val = "错" },
new {Id = 163104, Val = "对" },
new {Id = 163103, Val = "错" },
new {Id = 163102, Val = "对" },
new {Id = 163101, Val = "对" },
new {Id = 163100, Val = "对" },
new {Id = 163099, Val = "对" },
new {Id = 163098, Val = "错" },
new {Id = 163097, Val = "对" },
new {Id = 163096, Val = "对" },
new {Id = 163095, Val = "错" },
new {Id = 163094, Val = "错" },
new {Id = 163093, Val = "错" },
new {Id = 163092, Val = "错" },
new {Id = 163091, Val = "对" },
new {Id = 163090, Val = "对" },
new {Id = 163089, Val = "错" },
new {Id = 163088, Val = "对" },
new {Id = 163087, Val = "对" },
new {Id = 163086, Val = "错" },
new {Id = 163085, Val = "错" },
new {Id = 163084, Val = "错" },
new {Id = 163083, Val = "错" },
new {Id = 163082, Val = "对" },
new {Id = 163081, Val = "错" },
new {Id = 163080, Val = "对" },
new {Id = 163079, Val = "错" },
new {Id = 163078, Val = "错" },
new {Id = 163077, Val = "对" },
new {Id = 163076, Val = "对" },
new {Id = 163075, Val = "错" },
new {Id = 163074, Val = "错" },
new {Id = 163073, Val = "错" },
new {Id = 163072, Val = "错" },
new {Id = 163071, Val = "错" },
new {Id = 163070, Val = "错" },
new {Id = 163069, Val = "对" },
new {Id = 163068, Val = "对" },
new {Id = 163067, Val = "错" },
new {Id = 163066, Val = "错" },
new {Id = 163065, Val = "错" },
new {Id = 163064, Val = "对" },
new {Id = 163063, Val = "错" },
new {Id = 163062, Val = "错" },
new {Id = 163061, Val = "错" },
new {Id = 163060, Val = "错" },
new {Id = 163059, Val = "错" },
new {Id = 163058, Val = "错" },
new {Id = 163057, Val = "错" },
new {Id = 163056, Val = "对" },
new {Id = 163055, Val = "对" },
new {Id = 163054, Val = "错" },
new {Id = 163053, Val = "对" },
new {Id = 163052, Val = "对" },
new {Id = 163051, Val = "错" },
new {Id = 163050, Val = "对" },
new {Id = 163049, Val = "错" },
new {Id = 163048, Val = "错" },
new {Id = 163047, Val = "对" },
new {Id = 163046, Val = "对" },
};
var result = new List<dynamic>();
var cnt=0;
var i=0;
foreach(var o in source)
{
if (o.Val == "错") cnt++;
else
{
if (cnt == 3) result.AddRange(source.GetRange(i - 3, 4));
cnt = 0;
}
i++;
}
foreach(var o in result) Console.WriteLine(o);
}
bug狂人 2018-04-05
  • 打赏
  • 举报
回复
实际你看见了,规律是对错错错对,两个对中间是三个错则记录一次,注意第一次做个处理,可以预先添加一条对。预先写个对错错错对做标准。

110,561

社区成员

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

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

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