1. 一个字符串参数(value)由字母(a-z,A-Z)组成,且最大字符位数为40,要求写一个函数(maxLength)返回该参数中连续相同字母的最大个数及该字母,如果最大位数有多个,则返回第一个。例:字符串“aaaddxxxxddddxxxx”,返回值为:“x,4”。
要求:请考虑代码执行的效率并注意编码的风格。2. 现有一个类person有三个属性,分别是name,age,sex。有一个List对象,保存了很多person对象的实例,请编写一个函数,对List里的实例进行排序。条件:18岁以上的人,排序顺序:性别,年龄,姓名全部降序。3. 有一个水果箱(box),箱子里装有水果(fruit)。每一种水果都有不同的重量(weight)和颜色(color),水果有:苹果(apple),梨(pear)。可以向水果箱(box)里添加水果(addFruit),也可以取出水果(getFruit)。请编写java代码实现上述功能。4. 有一静态整形变量X,初始值为0,用JAVA写四个线程,二个对其加1,二个对其减一,X等于0时不进行减操作,X等于5时结束程序。5. 编写一函数,将一个数字转换成中文返回。数字的最大值为99999,最小值为0,没有小数。例:输入“3587”,返回“三千伍百八十七”。
// 这个是从Java版偷过来的。嘿嘿
// http://topic.csdn.net/u/20100711/15/94889215-c666-4716-a6b5-1c0c8446db35.html
要求:请考虑代码执行的效率并注意编码的风格。2. 现有一个类person有三个属性,分别是name,age,sex。有一个List对象,保存了很多person对象的实例,请编写一个函数,对List里的实例进行排序。条件:18岁以上的人,排序顺序:性别,年龄,姓名全部降序。3. 有一个水果箱(box),箱子里装有水果(fruit)。每一种水果都有不同的重量(weight)和颜色(color),水果有:苹果(apple),梨(pear)。可以向水果箱(box)里添加水果(addFruit),也可以取出水果(getFruit)。请编写java代码实现上述功能。4. 有一静态整形变量X,初始值为0,用JAVA写四个线程,二个对其加1,二个对其减一,X等于0时不进行减操作,X等于5时结束程序。5. 编写一函数,将一个数字转换成中文返回。数字的最大值为99999,最小值为0,没有小数。例:输入“3587”,返回“三千伍百八十七”。
// 这个是从Java版偷过来的。嘿嘿
// http://topic.csdn.net/u/20100711/15/94889215-c666-4716-a6b5-1c0c8446db35.html
解决方案 »
- VSS签出后 仍看不到另一台机器上新建的窗体
- WPF如何写出可以移动的(Shape如图所示)
- tabcontrol中如何得到tabitem
- 第一天学习C#。
- 定义个结构体,里面含有字节数组,将结构体实例化后,再实例化其中的字节数组,然后不管字节数组长度设多少,Marshal.SizeOf(结构名)始终字节数组长度为4
- IIS服务器应用报错,Event code: 3005,大侠来救火!
- 将16进制数据转成图片形式
- 我自己写的c# 控件,抖个不停
- [求助]ftp登陆账户跟密码的设置
- 最近我拿到一個c#的程序
- C# 标签页 多文档窗口
- 【】【】求救,各位达人指导一下哈。~~~~~修改本机ip的问题
private char GetMaxChar(string p,out int maxcount)
{
if (null == p)
throw new ArgumentNullException();
if (p.Length == 0)
throw new ArgumentException("参数不能为空"); char pre = p[0], maxchar = p[0];
int count = 1;
maxcount = 1;
for (int i = 1; i < p.Length; i++)
{
if (pre == p[i])
{
count++;
}
else
{
if (count > maxcount)
{
maxcount = count;
maxchar = pre;
}
pre = p[i];
count = 1;
}
} return maxchar;
}
{
char tempStr='\0';
char maxStr = '\0';
int maxCount=0;
int tempCount = 0;
foreach (char c in str)
{
if (tempStr.Equals(c))
{
tempCount++;
}
else
{
tempStr = c;
tempCount = 1;
} if (tempCount > maxCount)
{
maxCount = tempCount;
maxStr = tempStr;
}
}
return maxStr.ToString() + "," + maxCount.ToString();
}
{
char maxChar = new char();
int maxCount = 0;
char tempChar = new char();
int tempCount = 0; for (int i = 0; i < str.Length; i++)
{
if (str[i] == tempChar)
tempCount ++;
else
{
if (tempCount > maxCount)
{
maxChar = tempChar;
maxCount = tempCount;
}
tempChar = str[i];
tempCount = 1;
}
}
return maxChar.ToString() + "," + maxCount.ToString();
}
{
//省略属性
public int CompareTo(Person other)
{
if (!Sex.Equals(other.Sex))
{
return other.Sex.CompareTo(Sex);
}
if (!Age.Equals(other.Age))
{
return other.Age.CompareTo(Age);
}
if (!Name.Equals(other.Name))
{
return other.Name.CompareTo(Name);
}
return 0;
}List<Person> all=new List<Person>();
//增加数据
all.Sort();
persons.Sort(delegate(Person left,Person right)
{
if (left.sex == right.sex)
{
if (left.age > right.age)
return 1;
else if (left.age < right.age)
return -1; return 0;
} if (right.sex)
return 2;
else
return -2;
});
{
public abstract int Weight
{
get;set;
}
public abstract string Color
{
get;set;
}
}class apple:fruit
{
public override int Weight
{
get{//实现}
set{//实现}
}
//color类似
}
class pear:fruit
{
//类似苹果
}class box
{
List<fruit> fruits=new List<fruit>();
public void addFruit(fruit obj)
{
fruits.Add(obj);
}
public void getFruit(fruit obj)
{
fruits.Remove(obj);
}
}C#里
此题比第二题还无算法意义,
第二题无需算法
本题就一个多态
如果高兴还可以在box类中实现this索引器,或者实现IList<fruit>接口亦可
private static string Demo(int num)
{
int length=num.ToString().Length;
if (length > 5)
{
return "超出5位";
}
char[] ch = new char[] { '万', '千', '百', '十' };
string nn = num.ToString();
StringBuilder sb = new StringBuilder();
char[] cn=new char[length];
int i = 0;
foreach (char c in nn)
{
switch (int.Parse(c.ToString()))
{
case 1: cn[i] = '一'; break;
case 2: cn[i] = '二'; break;
case 3: cn[i] = '三'; break;
case 4: cn[i] = '四'; break;
case 5: cn[i] = '五'; break;
case 6: cn[i] = '六'; break;
case 7: cn[i] = '七'; break;
case 8: cn[i] = '八'; break;
case 9: cn[i] = '九'; break;
case 0: cn[i] = '零'; break;
}
i++;
}
switch(length)
{
case 0: return "零";break;
case 1: return cn[0].ToString(); break;
case 2: return cn[0].ToString() + ch[3].ToString() + cn[1].ToString(); break;
case 3: return cn[0].ToString() + ch[2].ToString() + cn[1].ToString() + ch[3].ToString() + cn[2].ToString(); break;
case 4: return cn[0].ToString() + ch[1].ToString() + cn[1].ToString() + ch[2].ToString() + cn[2].ToString() + ch[3].ToString() + cn[3].ToString(); break;
case 5: return cn[0].ToString() + ch[0].ToString() + cn[1].ToString() + ch[1].ToString() + cn[2].ToString() + ch[2].ToString() + cn[3].ToString() + ch[3].ToString() + cn[4].ToString(); break;
default: return null;
}
}
笨方法
static int i=0;
static void Operate(object flag)
{
while (true)
{
lock (lockObj)
{
if (i == 5)
break;
if (flag.ToString() == "add")
{
Console.WriteLine("{0}把i从{1}增加到{2}",Thread.CurrentThread.Name,i,++i);
}
else
{
if (i != 0)
{
Console.WriteLine("{0}把i从{1}减少到{2}",Thread.CurrentThread.Name, i,--i);
}
}
}
}
Console.WriteLine("{0}已经结束",Thread.CurrentThread.Name);
}
调用 Thread thd1 = new Thread(new ParameterizedThreadStart(Operate));
Thread thd2 = new Thread(new ParameterizedThreadStart(Operate));
Thread thd3 = new Thread(new ParameterizedThreadStart(Operate));
Thread thd4 = new Thread(new ParameterizedThreadStart(Operate));
thd1.Name = "线程1";
thd2.Name = "线程2";
thd3.Name = "线程3";
thd4.Name = "线程4";
thd1.Start("add");
thd2.Start("add");
thd3.Start("");
thd4.Start("");
未详细调试,可能有bugstring[] moneys ={
"零",
"壹",
"贰",
"叁",
"肆",
"伍",
"陆",
"柒",
"捌",
"玖"
}; string[] powers ={
"拾",
"佰",
"仟",
"万",
"拾",
"佰",
"仟",
"亿"
};
string Money2Chinese(long money)
{
string result = Money2Chinese(money, 0);
result = Regex.Replace(result, "零[拾佰仟]", "零");
result = result.Replace("零万", "万");
result = Regex.Replace(result, "(零)+", "零");//去除重复零
if (result.EndsWith("零"))
result = result.Substring(0, result.Length - 1); return result + "元整";
} string Money2Chinese(long money, int power)
{
long yu = money % 10;
long shang = money / 10;
if (shang == 0)
{
return moneys[yu];
}
else
{
if (power > powers.Length - 1)
power = 0; string str = Money2Chinese(shang, power + 1) + powers[power] + moneys[yu];
return str; }
}
感觉是初级程序员面试题,顺着楼主的链接到java版一看,果然是面试题
第五题估计手写不好写,会有bug,其他还好
#region 判断字符串中出现频率最高字符及出现次数
public static int VipCharInStr(string _str, out char _c)
{
string _s=_str;
if (_s == null || _s.Length == 0)
{
_c = new char();
return 0;
}
int t=0;
_c = _str[0];
while (_s.Length > 0)
{
VipCharInStr(ref _s, ref t,_s[0], ref _c);
}
return t;
}
private static void VipCharInStr(ref string _str,ref int cnt,char _c,ref char _c1)
{
int j=0;
bool fnd=false;
for (int i = 0; i < _str.Length; i++)
{
if (_str[i] == _c) j++;
if(j>cnt)
{
fnd=true;
_c1=_c;
cnt = j;
}
}
//_str.Replace(_c1, new char());
_str=_str.Replace(_c.ToString(), "");
}
#endregion