一个经典的问题,高手来回答

问题描述

我有一个变量A,它可以是字符串也可以是数组它的值是A="1,2,3,4,5,6,7,8,9,10,11,12,.....,200"一直到200,也就是A是1到200的数字用,号连接在一起现在有一个变量B,这个变量B有可能是B="2",也有可能B="10,25",也有可能是B="3,18,19,45";也就是说B是200以内的一个或者多个数字,我现在得到B的值后,要从A里把B的值全部去除,得到剩下的值,这要怎么计算感谢大家.

解决方案

解决方案二:
这个根本不是经典问题都算不上程序问题按照,分割得到数组B="2"结果1B="10,25"结果2B="3,18,19,45"结果4然后循环读取就好了
解决方案三:
C#里可以用linq去处理
解决方案四:
vararrA="1,2,3,4,5,6,7,8,9,10,11,12".Split(',');vararrB="3,18,19,45".Split(',');Console.WriteLine(string.Join(",",arrA.Except(arrB)));

不经典,就差集
解决方案五:
引用3楼starfd的回复:

vararrA="1,2,3,4,5,6,7,8,9,10,11,12".Split(',');vararrB="3,18,19,45".Split(',');Console.WriteLine(string.Join(",",arrA.Except(arrB)));

不经典,就差集

这个不对,你自己运行看看
解决方案六:
引用4楼pony288的回复:

Quote: 引用3楼starfd的回复:
vararrA="1,2,3,4,5,6,7,8,9,10,11,12".Split(',');vararrB="3,18,19,45".Split(',');Console.WriteLine(string.Join(",",arrA.Except(arrB)));

不经典,就差集

这个不对,你自己运行看看

你要的是200,难道我就一定要写200才行?
解决方案七:
string[]arrB="3,5,10".Split(',');StringBuilderstr=newStringBuilder();for(inti=0;i<arrA.Length;i++){boolbl=true;for(intj=0;j<arrB.Length;j++){if(arrA[i].Equals(arrB[j])){bl=false;continue;}}if(bl){if(string.IsNullOrEmpty(str.ToString()))str.Append(arrA[i]);elsestr.Append(","+arrA[i]);}}Console.WriteLine(str.ToString());
解决方案八:
string[]arrA="1,2,3,4,5,6,7,8,9,10,11,12".Split(',');string[]arrB="3,5,10".Split(',');StringBuilderstr=newStringBuilder();for(inti=0;i<arrA.Length;i++){boolbl=true;for(intj=0;j<arrB.Length;j++){if(arrA[i].Equals(arrB[j])){bl=false;continue;}}if(bl){if(string.IsNullOrEmpty(str.ToString()))str.Append(arrA[i]);elsestr.Append(","+arrA[i]);}}Console.WriteLine(str.ToString());
解决方案九:
变量的声明我就不写了,反正都知道是什么样的strA=","+strA+",";foreach(stringiteminstrB.Split(',')){strA=strA.Replace(","+item+",",",");}strA=strA.Trim(',');

解决方案十:
引用3楼starfd的回复:

vararrA="1,2,3,4,5,6,7,8,9,10,11,12".Split(',');vararrB="3,18,19,45".Split(',');Console.WriteLine(string.Join(",",arrA.Except(arrB)));

不经典,就差集

正解
解决方案十一:
引用楼主pony288的回复:

我有一个变量A,它可以是字符串也可以是数组

如果类型不确定,这种代码我就不看、不用。
解决方案十二:
引用10楼sp1234的回复:

Quote: 引用楼主pony288的回复:
我有一个变量A,它可以是字符串也可以是数组

如果类型不确定,这种代码我就不看、不用。

好像也对,因为字符串本身就是数组嘛,所以可以这样获得一个字符a="abc"[0];这个题其实很简单,不用那么复杂,只要从另一个角度思考就可以了,用现有函数.Replace消除掉字符串中的字符就可以了。
解决方案十三:
引用3楼starfd的回复:

vararrA="1,2,3,4,5,6,7,8,9,10,11,12".Split(',');vararrB="3,18,19,45".Split(',');Console.WriteLine(string.Join(",",arrA.Except(arrB)));

不经典,就差集

+1
解决方案十四:
看不出哪里经典了。a=[1,2]b=[1]得到c=[2]这样很难?
解决方案十五:
如果都是数字的话,值得思考一下。可能涉及到效率问题吧,设计算法方面了吧就是,要把要去除的数组b先排序。然后就不用通过遍历源数组删除了,通过二分法什么的,而且b数组也变成是有序的,前面一个数字去除后,后面一个数字查找的范围也会减小,这样如果数量较大的话效率应该会提高不少。

时间: 2024-09-19 19:02:04

一个经典的问题,高手来回答的相关文章

关于android 横竖屏的一个问题。求高手赐教。

问题描述 关于android 横竖屏的一个问题.求高手赐教. 关于android 横竖屏的一个问题.求高手赐教. activity被我强制设为横屏了,但是在此activity上锁屏后再解锁屏,这时此activity竟是从竖屏切换到横屏了,也就是说锁屏后横屏的activity又变回竖屏了.这是怎么回事?如何让被我强制设为横屏的activity一直保持横屏,即使在锁屏的时候? 解决方案 其实我很奇怪为什么你的屏幕没有转成横屏,因为你已经设置横屏了. 如果一个界面是横屏状态下锁屏,如果锁屏界面是竖屏,

串口通信-请高手帮忙回答,在龚建伟老师的串口调试中遇到了Serial串口类的问题

问题描述 请高手帮忙回答,在龚建伟老师的串口调试中遇到了Serial串口类的问题 点击打开串口按钮时,就会弹出以上图片的错误, 代码如下 // SerialPortTestDlg.h : header file // #include"SerialPort.h" #if !defined(AFX_SERIALPORTTESTDLG_H__37F6643D_1905_4655_883E_24AD7F141ED0__INCLUDED_) #define AFX_SERIALPORTTEST

PhotoShop绘制一个经典中国风陶瓷瓶瓷器教程

  教程我们用PS绘制一个经典中国风陶瓷瓶(瓷器),做这个花瓶的过程并不复杂,应用的滤镜也很简单,关键在于对事物的认知与对形体的把握. 先来看看最后的效果: 首先绘出一个陶瓷花瓶的外形,如下图: 我画的是一个比较典型的花瓶外形,设想光源有二,左边是主光源,右边有一暖色辅助光. 设置好渐变色,如图,先上辅光这面的颜色: 着是主光源这边,设想成自然光,花瓶呈现的差不多是本色: 用钢笔工具画出明暗交界线.你可以画得很细,这样以后的修改就会少些. 分类: PS鼠绘教程

线程同步的一个问题,求高手指导

问题描述 线程同步的一个问题,求高手指导 public class TestTicket{ public static void main(String[] args){ SellTickets st = new SellTickets(); Thread t1 = new Thread(st,"窗口1--"); Thread t2 = new Thread(st,"窗口2--"); Thread t3 = new Thread(st,"窗口3--&quo

c语言-一个经典的递归算法,谁能告诉我他的运算流程。我自己是想不通0.0

问题描述 一个经典的递归算法,谁能告诉我他的运算流程.我自己是想不通0.0 #include using namespace std; void reverse(); int main() { printf("enter a sentence: "); reverse(); return 0; } void reverse() { char c; scanf("%c",&c); if(c != 'n') { reverse(); //这一步以后转到哪里执行语

曹国伟被长久地经历训练为一个走平衡木的高手

摘要: 查看最新行情 儿时体操经历训练出来的平衡感至今仍被曹国伟用作处理他在商业世界中的平衡关系,我们好奇,这位遵守世俗平衡规则的商人是如何完成这场移动浪潮下社交工具领域的   查看最新行情 儿时体操经历训练出来的平衡感至今仍被曹国伟用作处理他在商业世界中的平衡关系,我们好奇,这位遵守世俗平衡规则的商人是如何完成这场移动浪潮下社交工具领域的颠覆,乃至中国舆论场的变革.又是如何与自己亲手缔造的中国最具颠覆力的社交工具――微博,达成和解. 纽约,4月17早晨8点30分, 微博上市敲钟还有一小时,新浪

算法-贪心的一个经典问题,,,

问题描述 贪心的一个经典问题,,, 输入 第1行:1个数N,线段的数量(2 <= N <= 10000) 第2 - N + 1行:每行2个数,线段的起点和终点(-10^9 <= S,E <= 10^9) 输出 输出最多可以选择的线段数量. 输入示例 3 1 5 2 3 3 6 输出示例 2 #include <iostream> #include <cstdio> #include <algorithm> using namespace std;

求一个正则表达式(正则高手来,小弟谢过了)

问题描述 求一个正则表达式(正则高手来,小弟谢过了) 在java代码中,有一个字符串 String str = "aa{bb}cc{{dd}}ee": 我用str的replace()方法: 求一个替换str中的字符'{' 和字符'}'的一个正则表达式 解决方案 比如把{.}都替换成_ String newStr = str.replaceAll("[{|}]","_"); 解决方案二: 高手请进!小弟急求 解决方案三: String str =

20年资深Oracle老兵:一个经典老问题在12c中的优化实践

作者介绍 罗敏,从事Oracle技术研究.开发和服务工作20余年,在Oracle中国公司的10多年,分别在顾问咨询部.技术服务部担任资深技术顾问.曾参与国内银行.电信.政府等多个行业大型IT系统的建设和运维服务工作,为国内主要软件开发商和集成商进行过多场Oracle高级技术应用培训和交流活动.著有书籍<品悟性能优化>.<感悟Oracle核心技术>.<Oracle数据库技术服务案例精选>.     1 一个经典老问题 我们先叙述一个经典老问题,也就是在批处理中由于统计信息