2011华为上机机试题
来源:互联网 发布:linux退不出vi 编辑:程序博客网 时间:2024/05/16 12:31
1.
/*
* 输入一个表达式,3*8+7-2,没有括号 输出结果
*/
public
int
getMyRet(String str) {
char
[] myCh = str.toCharArray();
int
loopLen = myCh.length;
String[] myStr =
new
String[loopLen];
int
ret =
0
;
int
op1 =
0
;
int
op2 =
0
;
boolean
mFlag =
true
;
int
i =
1
;
// 循环变量
for
(
int
j =
0
; j < myCh.length; ++j) {
myStr[j] = Character.toString(myCh[j]);
}
// 处理乘除法
while
(mFlag) {
for
(; i < loopLen -
1
; ++i) {
if
(
"*"
.equals(myStr[i]) ||
"/"
.equals(myStr[i])) {
op1 = Integer.parseInt(myStr[i -
1
]);
op2 = Integer.parseInt(myStr[i +
1
]);
if
(
"*"
.equals(myStr[i])) {
ret = op1 * op2;
}
else
{
ret = op1 / op2;
}
mFlag =
true
;
myStr[i -
1
] = Integer.toString(ret);
for
(
int
j = i; j < loopLen -
2
; ++j) {
myStr[j] = myStr[j +
2
];
}
loopLen = loopLen -
2
;
break
;
}
// 乘法 和 除法 已经 运算完了
if
(i == loopLen -
2
|| loopLen ==
1
) {
mFlag =
false
;
break
;
}
}
// 乘法 和 除法 已经 运算完了
if
(loopLen ==
1
) {
mFlag =
false
;
break
;
}
}
if
(loopLen >
1
) {
mFlag =
true
;
i =
1
;
}
else
{
mFlag =
false
;
}
// 加减法运算
while
(mFlag) {
for
(; i < loopLen -
1
; ++i) {
if
(
"+"
.equals(myStr[i]) ||
"-"
.equals(myStr[i])) {
op1 = Integer.parseInt(myStr[i -
1
]);
op2 = Integer.parseInt(myStr[i +
1
]);
if
(
"+"
.equals(myStr[i])) {
ret = op1 + op2;
}
else
{
ret = op1 - op2;
}
mFlag =
true
;
myStr[i -
1
] = Integer.toString(ret);
for
(
int
j = i; j < loopLen -
2
; ++j) {
myStr[j] = myStr[j +
2
];
}
loopLen = loopLen -
2
;
break
;
}
}
// 加法 和 减法 已经 运算完了
if
(loopLen ==
1
) {
mFlag =
false
;
break
;
}
}
return
ret;
}
2.
/*
* 输入字符串长度,字符串,计数m。从前往后技术,当数道m个元素时,m个元素出列,同时将该元素赋值给m,
* 然后从下一个数计数循环,直到所有数字都出列位置,给定的数全部为大于0的数字。
* 输出出队队列
*/
public
String getOutString(
int
len, String str,
int
m) {
StringBuffer sBuffer =
new
StringBuffer(
""
);
String[] myStr = str.split(
","
);
int
[] myInt =
new
int
[len];
int
myLen = len;
int
nNum = m % myLen;
int
temp =
0
;
for
(
int
i =
0
; i < len; ++i) {
myInt[i] = Integer.parseInt(myStr[i]);
}
while
(myLen >
0
) {
if
(nNum ==
0
) {
temp = myInt[myLen -
1
];
}
else
{
temp = myInt[nNum -
1
];
for
(
int
i = nNum; i < myLen; ++i) {
myInt[i -
1
] = myInt[i];
}
}
--myLen;
if
(myLen >
0
) {
if
(nNum ==
0
) {
nNum = temp % myLen;
}
else
{
nNum = temp % myLen + (nNum -
1
);
if
(nNum > myLen -
1
)
nNum = nNum % myLen;
}
}
sBuffer.append(temp);
if
(myLen >
0
)
sBuffer.append(
","
);
}
return
sBuffer.toString();
}
3.
/*
* 输入字符串长度,字符串。从后向前比较,以最短字符串为标准 输出不同的元素的个数
*/
public
int
getDiffNum(
int
len1, String str1,
int
len2, String str2) {
int
myCount =
0
;
int
myLen =
0
;
String[] myStr1 = str1.split(
","
);
String[] myStr2 = str2.split(
","
);
if
(len1 > len2) {
myLen = len2;
}
else
myLen = len1;
for
(
int
i =
0
; i < myLen; ++i) {
if
(!myStr1[len1 - i -
1
].equals(myStr2[len2 - i -
1
])) {
++myCount;
}
}
return
myCount;
}
- 2011华为上机机试题
- 华为上机试题
- 华为java上机试题
- 2013华为上机试题
- 2014华为上机试题
- 2014华为上机试题
- 华为上机试题练习
- 华为上机试题+答案(更新......)
- 华为上机试题及面试
- 华为上机面试题总结
- 华为上机试题,字符替换
- 华为上机试题:数字问题.
- 2011 华为机试题
- 华为 机试题 2011
- 2014华为武汉上机试题规范
- 华为上机试题2(字符串分解)
- 华为上机试题3(简单密码)
- 华为上机试题4(坐标移动)
- 基于WIZ811MJ的Arduino网络恒温器
- android实现语音
- IT专业术语-----> RC
- tomcat集群
- 铁道部4.3万亿资产负债过半 今年新投资6500亿
- 2011华为上机机试题
- ASP.NET站点自动重启问题排查
- C#网络编程系列六:UDP编程
- Linux环境下环境变量的设置
- C# listview通过绑定imagelist来添加图片
- jquery图片自动切换
- 最近开发一个项目使用了Nhibernate出现了如下问题deleted object would be re-saved by cascade (remove deleted object from
- 书写是为了更好的思考
- C#网络编程系列五:TCP编程