编程练习题汇总

'''
题目描述
请设计一个算法能够完成两个用字符串存储的整数进行相加操作,对非法的输入则返回error
输入描述:
输入为一行,包含两个字符串,字符串的长度在[1,100]。
输出描述:
输出为一行。合法情况输出相加结果,非法情况输出error
示例1
输入
123 123
abd 123
输出
246
Error
'''

try:
    a=input()
    a=a.strip().split(' ')
    a[0],a[1]=int(a[0]),int(a[1])
    print(a[0]+a[1])
except:
    print('error')

题目描述

请设计一个高效算法,查找数组中未出现的最小正整数。

给定一个整数数组A和数组的大小n,请返回数组中未出现的最小正整数。保证数组大小小于等于500。
测试样例:

[-1,2,3,4],4

返回:1


import java.util.*;

public class ArrayMex {
    public  int findArrayMex(int[] A, int n) {
        // write code here
        Arrays.sort(A);
        if(A[0]>1) return 1;
        for(int i=1;i<A.length;i++){
            if(A[i]<=0) A[i]=0; //将负数制零
            else if(A[i]-A[i-1]>1)
                return A[i-1]+1;
        }
        return A[n-1]+1;
    }
}


package main;
import static main.Print.*;
import java.util.*;

/*
题目描述
对于两个字符串A,B。请设计一个高效算法,找到B在A中第一次出现的起始位置。若B未在A中出现,则返回-1。

给定两个字符串A和B,及它们的长度lena和lenb,请返回题目所求的答案。

测试样例:
"acbc",4,"bc",2
返回:2
 */

public class Main{
    public static void main(String[] args){
        StringPattern stringPattern=new StringPattern();
        String A="ABC",B="D";
        println(stringPattern.findAppearance(A,A.length(),B,B.length()));
        A="123";
        B="2";
        println(stringPattern.findAppearance(A,A.length(),B,B.length()));
        A="123";
        B="31";
        println(stringPattern.findAppearance(A,A.length(),B,B.length()));
    }
}


class StringPattern {
    public boolean check(String A,String B,int start){
        for(int st=0;st<B.length();st++) {
            if(st+start>=A.length()) return false;
            if (A.charAt(st + start) != B.charAt(st))
                return false;
        }
        return true;
    }
    public int findAppearance(String A, int lena, String B, int lenb) {
        // write code here
        for(int i=0;i<lena;i++){
            if(check(A,B,i))
                return i;
        }
        return -1;
    }
}

#! python3
#-*- coding:utf-8 -*-

"""
题目描述
数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。
输入描述:
输入数据有多组,每组占一行,由两个整数n(n < 10000)和m(m < 1000)组成,n和m的含义如前所述。
输出描述:
对于每组输入数据,输出该数列的和,每个测试实例占一行,要求精度保留2位小数。
示例1
输入
81 4
2 2
输出
94.73
3.41
"""
import sys
import math


def f(n, m):
    Sum = tmp = n
    m -= 1
    for i in range(m):
        tmp = math.sqrt(tmp)
        Sum += tmp
    return "{0:.2f}".format(Sum)


if __name__ == "__main__":
    ""
    for line in sys.stdin:
        n, m = map(int, line.strip().split(" "))
        print(f(n, m))



#! python3
# -*- coding:utf-8 -*-

"""
题目描述

有一个长为n的数组A,求满足0≤a≤b < n的A[b]-A[a]的最大值。

给定数组A及它的大小n,请返回最大差值。
测试样例:

[10, 5], 2

返回:0

"""


class LongestDistance:
    def getDis(self, A, n):
        """
        暴力穷举,遍历所有情况
        """
        maxCha=0
        aLen=len(A)
        for i in range(aLen):
            for j in range(i,aLen):
                cha=A[j]-A[i]
                if cha>maxCha:
                    maxCha=cha
        return maxCha



猜你喜欢

转载自blog.csdn.net/diOSyu/article/details/80426002