微信

使用微信服务,更方便

职友集>程序员面试题 > 群硕笔试题

群硕笔试题

2015-11-07 06:30:01 阅读( 182 )

1194人 收藏本页

标签:程序员面试题

请写一个函数,计算字符串的长度.
答:
int strlen(const char* src){
assert( NULL != src);
int len = 0;
while(*src++ != ‘′)
len++;
return len;
}
2. 请写一个函数,实现strstr,即从一个字符串中,查找另一个字符串的位置,如strstr(“12345″, “34″)
返回值为2,在2号位置找到字符串34
答:
char * strstr(const char* src, const char* sub){
assert( NULL != src && NULL != sub);
const char* p = src, *q = sub;
while(*src != ‘′){
if(*src++ != *sub++){
src = ++p;
sub = q;
}
}
if(*src == ‘′ )
return NULL;
else
return q;
}
3. 编写函数,将”bei jing ni hao ma.”倒置为”ma. hao ni jing bei”,即句子中的单词位置倒置,而不改变单词内部的结构。
答.
void reverse_(char* ptr, int len){
if(len == 0)
return;
char temp;
for(int i =0; i <= len / 2; i++){
temp = *(ptr+i);
*(ptr+i) = *(ptr + len – i);
*(ptr + len -i) = temp;
}
}
void reverse(char * src){
assert(NULL != src);
char * p = src, *src_ = src;
while(*src != ‘′){
if(*src == ‘ ‘){
reverse_(p, src-p);
while(*src++ == ‘ ‘);
p = src;
}else{
src++;
}
}
reverse_(src_, src – src_ – 1);
}
4. 智力题,有8个球和一个天平,其中有一个球比其他的都重,看怎么通过2次找到该重球.
答.设球的标签为abcdefgh
先选abc与def比较,三种结果
abc更重,则再比较a与b,如果哪个球重,则该球为重球,如果平衡,则c球为重球
def更重,同上
一样重,则比较g,h,重球为所要之球
5.拓展上面题目,如果有n个球,怎么用最少的次数找到重球,并且求出最少次数。
答.仿照上题即可,次数为大于log3n的最小整数
要写一个Combination
代码如下
import java.util.ArrayList;
import java.util.StringTokenizer;
public class MyCombination {
/**
* @param args
*/
public static void main(String[] args) {
initialize(args);
System.out.println(“Now work”);
doWork(“”);
}
/**
*
* @param args
* initialization
*/
private static void initialize(String[] args) {
if (args.length == 0) {
System.out
.println(“invalid usage
The valid usage is ”java MyCombination {set}”");
}
array = new ArrayList();
StringBuffer sb = new StringBuffer();
for (String i : args) {
sb.append(i + ” “);
}
System.out.println(sb);
StringTokenizer st = new StringTokenizer(new String(sb));
while (st.hasMoreTokens()) {
array.add(st.nextToken());
}
}
/**
*
* @param ab
* main work function
*/
private static void doWork(String ab) {
String[] a = new String[array.size()];
if(ab==”"){
for(int i=0;i<array.size();i++){
a[i] = new String(“”+array.get(i));
}
for(String i:a){
System.out.println(i);
if(!i.substring(i.length()-1).equals(array.get(array.size()-1))) {
int j = array.indexOf(i.substring(i.length()-1));
for(int k=1;k<array.size()-j;k++){
String newValue = new String(i+array.get(j+k));
System.out.println(newValue);
doWork(newValue);
}
}
}
}else{
if(!ab.substring(ab.length()-1).equals(array.get(array.size()-1))) {
int j = array.indexOf(ab.substring(ab.length()-1));
for(int k=1;k<array.size()-j;k++){
String newValue = new String(ab+array.get(j+k));
System.out.println(newValue);
doWork(newValue);
}
}
}
}
private static ArrayList array;
}

来自分智网

下一篇:新波科技公司面试题笔试题IQ+专业

上一篇:什么是软件配置管理

亲~ 如果您有更好的答案 可在评论区发表您独到的见解。

您想查看更多的信息: 面试题