几个简单的算法题

1、实现一个字符串查找子串的函数

#include <iostream>
int search(char str[],char str1[])
{
	int strlen1=strlen(str);
	int strlen2=strlen(str1);

	if(strlen1<strlen2)
		return -1;

	int i,j;
	for(i=0;i<strlen1;i++)
	{
		int flag=1;
		int pos=i;
		if(str[i]==str1[0])
		{
			for(j=1;j<strlen2;j++)
			{
				i++;
				if(str[i]!=str1[j])
				{
					flag=0;
				}
			}
			if(flag==1)
				return pos+1;
			else
				i=pos;
		}
	}
	return -1;
}

void main()
{
	std::cout<<search("abababcdefg","babc");
}

  

  2、实现将一个输入的数字颠倒(输入12345->54321)

#include <iostream>

char *change(char *str)
{
	int length=strlen(str);
	int i;
	char flag;
	for(i=0;i<length/2;i++)
	{
		flag=str[length-1-i];
		str[length-1-i]=str[i];
		str[i]=flag;
	}
	return str;
}

void main()
{
	char ch[6]="12345";
	std::cout<<change(ch);
	getchar();
}

  3、 使用递归实现二分法查找

#include "stdio.h"

void Search(int p[],int low,int height,int key)
{
	int middle=(low+height)/2;
	if(low>height)
	{
		printf("没有该数!");
		return;
	}
	if(p[middle]==key)
	{
		printf("%d\n",middle);
		return;
	}
	else if(p[middle]>key)
	{
		 Search(p,low,middle-1,key);
	}
	else if(p[middle]<key)
	{
		 Search(p,middle+1,height,key);
	}
}
int main()
{
	int p[5]={1,2,3,4,5};
	Search(p,0,4,4);
	return 0;
}

  

4、去掉一个字符串的前后空格

#include <iostream>

void removeK(char *ch)
{
    int length=strlen(ch);
    int i=0;
    char newchar[200];
    int size=0;//记录空格的数量
    int flag=0;//标记是否已经开始没有空格
    int j=-1;
    for(i=0;i<length;i++)
    {
        if(ch[i]!=' ')
            flag=1;
        if(flag==1)
        {
            if(ch[i]!=' ')
            {
                int a;
                for(a=0;a<size;a++)
                {
                    j++;
                    newchar[j]=' ';
                }
                size=0;
                j++;
                newchar[j]=ch[i];
            }
            else
            {
                size++;
            }
        }
    }
//    printf("%d",strlen(newchar));
    
 
    int b=0;
    for(b=0;b<=j;b++)
        printf("%c",newchar[b]);
}

int main()
{
    char *ch="  hello   helojh  fdgdf         dfdf               ";
    removeK(ch);
}

 

posted @ 2012-03-21 00:06  wangyan9110  阅读(958)  评论(1编辑  收藏  举报