JAVA -ST

1.标题:字符串中找出连续最长的数字串|时间限制:1秒|内存限制:32768k读入一个字符串str,输出字符串str中连续最长的数字串

输入描述:个测试输入包含1个测试用例,一个字符串str,长度不超过255
输出描述:在一行内输出str中里连续最长的数字串

示例:
输入:abcd12345ed125ss123456789
输出:123456789

(https://www.nowcoder.com/questionTerminal/bd891093881d4ddf9e56e7cc8416562d?orderByHotValue=0&page=1&onlyReference=false)

#include<iostream>
#include<string>

using namespace std;

string longestNumStr(string str){
    string max = "",tmp = "";
    for(int i = 0; i < str.size(); ++ i){
        if(str[i] >= 48 && str[i] <= 57){
            tmp += str[i];
        }
        else{
            max = max.size() < tmp.size() ? tmp : max;
            tmp = "";
        }
    }
    max = max.size() < tmp.size() ? tmp : max;
    return max;
}

int main(){
    string str;
    while(getline(cin,str)){
        cout << longestNumStr(str) << endl;
    }
    return 0;
}

2.标题:倒置字符串|时间限制:1秒|内存限制:32768k讲一句话的单词进行倒置,标点不倒置。比如i like bejing.经过函数后变为:beijing.like
i
输入描述:每个测试输入包含1个测试用例:i like beijing 输入用例长度不超过100
输出描述:依次输出倒置之后的字符串,以空格分割

示例:
输入:I like beijing.
输出:beijing.like I

()

#include<bits/stdc++.h>
using namespace std;
int main()
{
   string a;
    while(getline(cin,a))
    {
        reverse(a.begin(),a.end());
        int i=0,j=i;
        while(i<a.size())
        {
            //cout<<i<<endl;
            while(i<a.size()&&a[i]!=‘ ‘)
            ++i;
              // cout<<i<<endl;
            reverse(a.begin()+j,a.begin()+i);
            j=++i;
        }
        cout<<a<<endl;
    }
return 0;
}

3.标题:寻找第K大|时间限制:3秒|内存限制:32768k有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数给定一个整数数组A,同时
给定它的大小n和要找的K(K在1和n之间),请返回第K大的数,保证答案存在

样例:
[1,3,5,2,2],5,3
返回:2

(https://www.nowcoder.com/questionTerminal/e016ad9b7f0b45048c58a9f27ba618bf)

class Finder {
public:
    int findKth(vector<int> a, int n, int K) {
        return quickfind(a, 0, n-1, K);
    }

    int quickfind(vector<int>& a, int left, int right, int k) {
        int i = left;
        int j = right;
        int mark = a[left];

        while (i < j) {
            while (i < j && a[j] >= mark)
                --j;
            if (i < j)
                a[i++] = a[j];

            while (i < j && a[i] <= mark)
                ++i;
            if (i < j)
                a[j--] = a[i];
        }
        a[i] = mark;

        //哨兵右侧比他大的数字个数
        int big_num = right - i;

        //如果哨兵刚好是第K大的数
        if (k - big_num - 1 == 0)
            return mark;
        else if (k - big_num - 1 > 0) {
            //如果右侧数字个数不够K个,则从左侧找第k-big_num-1大的数
            return quickfind(a, left, i - 1, k - big_num - 1);
        } else {
            //如果右侧数字个数比K多,则在右侧找第K大的数
            return quickfind(a, i + 1, right, k);
        }
    }
};

4.标题:求最小公倍数|时间限制:1秒|内存限制:32768k
正整数A和正整数B的最小公倍数是指能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数
输入描述:
输入两个正整数A和B
输出描述:
输出A和B的最小公倍数

示例:
输入:
5
7
输出:
35

(https://www.nowcoder.com/questionTerminal/22948c2cad484e0291350abad86136c3)

#include<iostream>
using namespace std;

int gcd(int a, int b) // greatest common divisor
{
    while(a%b){
        int tmp = a;
        a = b;
        b = tmp%b;
    }
    return b;

}
int main()
{
    int a,b;
    while(cin >> a >> b){
        cout << a*b/gcd(a,b) <<endl;
    }
    return 0;
}

5.标题:计算日期到天数转换|时间限制:1秒|内存限制:32768K
根据输入的日期。计算是这一年的第几天
详细描述:
输入某年某月某日,判断这一天是这一年的第几天?
接口设计及说明:
/**********************************
Descrription:数据转换
Input Param:year输入年份
Month输入月份
Day输入天
OutParam:
Return Value:成功返回0,失败返回-1(如:数据错误)
************************************/
public static int iConverDateToDay(int year,int month,int day)
{
/*在这里实现功能,将结果填入输入数组中*/
return 0;
}
/**************************************************************
Description:
Input Param:

OutParam:
Return Value:成功:返回outDay输入计算后的第几天;
失败:返回-1
****************************************************************/
public static int getOutDay()
{
return 0;
}

输入描述:
输入三行,分别是年,月,日
输出描述:
成功:返回outDay输出计算后的第几天;
失败:返回-1

示例:
输入: 2012
12
31
输出:
366

(https://www.nowcoder.com/questionTerminal/769d45d455fe40b385ba32f97e7bcded?pos=16&orderByHotValue=1)

#include<iostream>
using namespace std;
const int days[] = { 0,31,59,90,120,151,181,212,243,273,304,334,365 };
int main() {
    int y, m, d;
    while (cin >> y >> m >> d) {
        int ans = days[m - 1] + d;
        if (((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) && m > 2)
            ans++;
        cout << ans << endl;
    }
    return 0;
}

6.标题:[中级]单词倒排|时间限制:1秒|内存限制:32768k
对字符串中的所用单词进行倒排
说明:
1.每个单词是以26个大写或小写英文字母构成;
2.非构成单词的字符均视为单词间隔符
3.要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;
4.每个单词最长20个字母;

输入描述:
输入一行以空格来分隔的句子
输出描述:
输出句子的逆序

示例:
输入:i am a student
输出:student a am i

(https://www.nowcoder.com/questionTerminal/81544a4989df4109b33c2d65037c5836)

#include<iostream>
#include<sstream>
#include<string>
#include<vector>
using namespace std;
void deal(vector<string>&res,string& str, char delim = ‘ ‘) {
    stringstream ss;
    ss << str;
    string tmp;
    while (ss>>tmp) {
        res.push_back(tmp);
    }
}
int main() {
    string str;
    while (getline(cin, str)) {
        vector<string> res;
        for (int i = 0; i < str.size(); i++)
            if (!isalnum(str[i]))
                str[i] = ‘ ‘;
        deal(res, str);
        cout << res[res.size() - 1];
        for (int i = res.size() - 2; i >= 0; i--)
            cout << " " << res[i];
        cout << endl;
    }
    return 0;
}

7.标题:删除字符串中出现次数最少的字符|时间限制:1秒|内存限制:32768k
实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其他字符保持原来的顺序
输入描述:
字符串只包含小写英文字母,不考虑非法输入,输入的字符串长度小于等于20个字节
输出描述:
删除字符串中出现最少的字符后的字符串

示例:
输入:abcdd
输出:dd

(https://www.nowcoder.com/questionTerminal/05182d328eb848dda7fdd5e029a56da9?orderByHotValue=1&page=6&onlyReference=false)

#include <iostream>
#include <string>
using namespace std;
int main()
{
    int i, m,min;
    int a[26];
    string str,temp;
    while (cin >> str)
    {
        for (int i = 0; i < 26; i++)
            a[i] = 0;

        m = str.size();
        for (i = 0; i<m; i++)
            a[str[i]-‘a‘]++;
        min = a[str[0]-‘a‘];
        for (i = 0; i<m; i++)
        if (a[str[i] - ‘a‘] <= min)
            min = a[str[i]-‘a‘];
        for (i = 0; i < m; i++)
        if (a[str[i] - ‘a‘] > min)
            cout << str[i];

        cout << endl;
    }
    return 0;
}

8.标题:字符串反转|时间限制:1秒|内存限制:32668k
写出一个程序,接受一个字符串,然后输出该字符串翻转后的字符串。例如:
输入描述:
输入N个字符
输出描述:
输出该字符串反转后的字符串

示例:
输入:abcd
输出:dcba

#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
#include<cmath>
#include<unordered_map>
using namespace std;

int main(){
    string s;
    getline(cin, s);
    for (int i = s.size() - 1; i >= 0;i--)
        cout << s[i];
    cout << endl;

    return 0;
}

9.标题:奇数位丢弃|时间限制:1秒|内存限制:32768k
对于一个由0..n的所有数按升序组成的序列,我们要进行一些筛选,每次我们取当前所有数字中从小到大的第奇数位个的数,并将其丢弃。重复这一

过程直到最后剩下一个数。请求出最后剩下的数字。
输入描述:
每个数据一行一个数字,为题目中的n(n小于等于1000)
输出描述:
一行输出最后剩下的数字

示例:
输入:500
输出:255

(https://www.nowcoder.com/questionTerminal/196141ecd6eb401da3111748d30e9141?source=relative)

#include <cstdio>

int main()
{
    int n;
    while(scanf("%d", &n) != EOF){
        int b = 1;
        while(b <= n + 1){
            b <<= 1;
        }
        printf("%d\n", (b >> 1) - 1);
    }
    return 0;
}

10.标题:阶乘尾零|时间限制:3秒|内存限制:32768k
请设计一个算法,计算n的阶乘有多少个尾随零
给定一个int n,请返回n的阶乘的尾零个数。保证n为正整数

示例:
输入:5
返回:1

(https://www.nowcoder.com/questionTerminal/434922f9f4724b97b83c417e884008f1)

class Factor {
public:
    int getFactorSuffixZero(int n) {
        int base=5,count=0;
        while(base<=n)
        {
            count+=n/base;
            base*=5;
        }
        return count;
    }
};

原文地址:https://www.cnblogs.com/77yaer/p/10164759.html

时间: 2024-10-12 06:18:00

JAVA -ST的相关文章

ElasticsearchException: java.io.IOException: failed to read [id:0, file:/data/elasticsearch/nodes/0/_state/global-0.st]

from : https://www.cnblogs.com/hixiaowei/p/11213143.html 1.以前装过elasticsearch,重新安装elastic search ,报错 [2019-07-19T14:32:10,720][ERROR][o.e.g.GatewayMetaState ] [master-node] failed to read local state, exiting... org.elasticsearch.ElasticsearchExceptio

java编码规范

右括号") "与其后面的关键字之间,关键字与其后面的左括号"("或"{"之间,以及"}"与"{"之间,要以一个空格隔开:除". "外,所有二元操作符的前.后要加空格:在逗号后边加一个空格. 说明: 一个紧跟着括号的关键词应该被空格分开: 空白应该位于参数列表中逗号的后面: 所有的二元运算符,除了".",应该使用空格将之与操作数分开.一元操作符和操作数之间不应该加空格,

java面试一定会遇到的56个面试题

1.问题:如果main方法被声明为private会怎样? 答案:能正常编译,但运行的时候会提示"main方法不是public的". 2.问题:Java里的传引用和传值的区别是什么? 答案:传引用是指传递的是地址而不是值本身,传值则是传递值的一份拷贝. 3.问题:如果要重写一个对象的equals方法,还要考虑什么? 答案:hashCode. 4.问题:Java的"一次编写,处处运行"是如何实现的? 答案:Java程序会被编译成字节码组成的class文件,这些字节码可以

6-探秘Java中的String、StringBuilder以及StringBuffer

相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一下String.StringBuilder和StringBuffer这几个类,分析它们的异同点以及了解各个类适用的场景.下面是本文的目录大纲: 一.你了解String类吗? 二.深入理解String.StringBuffer.StringBuilder 三.不同场景下三个类的性能测试 四.常见的关于String.StringBuffer的面试题(辟谣网上流传的一些曲解String类

linux 下java内存不断增大解决办法

由于公司网站是用tomcat发布java开发的系统,但是前段时间我发现该系统内存在不断的增加,于是想解决这个问题: 1. top命令查看CPU和内存占用率 top回车,然后按1 发现进程PID 35163 CPU和内存占用率都很高 top - 06:13:47 up  5:31,  1 user,  load average: 2.11, 2.07, 2.06Tasks: 189 total,   1 running, 188 sleeping,   0 stopped,   0 zombieC

java keytool 使用详解

Keytool是一个Java数据证书的管理工具 ,Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里,包含两种数据: 密钥实体(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称加密) 可信任的证书实体(trusted certificate entries)——只包含公钥 ailas(别名)每个keystore都关联这一个独一无二的alias,这个alias通常不区分大小写 JDK中ke

java 调用 keytool 生成keystore 和 cer 证书

keytool是一个Java数据证书的管理工具, keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里, 包含两种数据: 密钥实体(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称加密) 可信任的证书实体(trusted certificate entries)——只包含公钥 ailas(别名)每个keystore都关联这一个独一无二的alias,这个alias通常不区分大小写 下面给出一

学习Java JDBC,看这篇就够了

JDBC (Java DB Connection)---Java数据库连接 JDBC是一种可用于执行SQL语句的JAVA API(ApplicationProgramming Interface应用程序设计接口).它由一些Java语言编写的类和界面组成. JDBC为数据库应用开发人员和数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯JAVA语言编写完整的数据库应用程序. JDBC代表JAVA数据库连接.它是一个软件层,允许开发者在JAVA中编写客户端/服务器应用. 一.

java基础之static(静态)

静态的属性.方法等属于类而不是对象. 静态的方法能够由类直接调用,不须要将类实例化. 本篇主要说明:1.态的代码.成员变量要比构造方法先运行. 2. 子类的构造方法会默认去调用父类的不带參数的构造方法,假设父类不提供不带參数的构造方法,则子类的构造方法要显示使用super(param),去调用父类的带參数的构造方法 下面代码,能够将凝视掉的内容放开,或增改參数类型.參数定义的位置等,然后运行main看看打印结果,就会更加明确:静态的代码(块).成员变量要比构造方法先运行. /** * autho