牛客之程序员面试金典_ 编程题(一)

【牛客刷题】大厂真题 | 前端面试篇(一) 牛客网是一个集笔面试系统、题库、课程教育、社群交流、招聘内推于一体的招聘类网站,更是一个专注于程序员的学习和成长的平台。自学是一个程序员必备的能力,而提高自己的编程能力最好方法就是通过刷题。一次偶然的机会让我发现牛客网这个新大陆,开启自己IT之旅。这里有个大厂的面试真题,知己知彼百战百胜。更有在线编程调试功能,提高编程效率。​求知无坦途,学问无捷径。👣一步一个脚印,你走过的路,每一步都算数。 阅读详情

1.确定字符串互异
请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。

给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符。保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。

测试样例:
“aeiou”
返回:True
“BarackObama”
返回:False

解法一:
采用双重循环,暴利破解:

import java.util.*;
public class Different {
    public boolean checkDifferent(String iniString) {
        for(int j = 0;j<iniString.length()-1;j++){
            for(int i = j+1;i<iniString.length();i++){
                if(iniString.charAt(j)==iniString.charAt(i)){
                    return false;
                }
            }
        }
        return true; 
     }
}

解法二:
先对字符串排序,然后根据正则表达式判断是否有连续字符

import java.util.*;
public class Different {
    public boolean checkDifferent(String iniString) {
        return (!sortString(iniString).matches("(.*)(.)\\2(.*)"));
    }
    //将字符串转为char类型数组,利用数组的sort方法排序,再转成字符串;
    public String sortString(String s){
        char[] a = s.toCharArray();
        Arrays.sort(a);
        return String.valueOf(a);
    }
}

2.原串翻转
题目描述
请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。

给定一个string iniString,请返回一个string,为翻转后的字符串。保证字符串的长度小于等于5000。

测试样例:
“This is nowcoder”
返回:”redocwon si sihT”

解法:
直接利用StringBuffer的reverse()方法:

import java.util.*;

public class Reverse {
    public String reverseString(String iniString) {
        StringBuffer sb = new StringBuffer(iniString);
        return sb.reverse().toString();
    }
}

3.确定两串乱序同构
题目描述
给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串重点空格。

给定一个string stringA和一个string stringB,请返回一个bool,代表两串是否重新排列后可相同。保证两串的长度都小于等于5000。

测试样例:
“This is nowcoder”,”is This nowcoder”
返回:true
“Here you are”,”Are you here”
返回:false

解法:
将两个字符串排序后,使用equals()方法比较是否相等

import java.util.*;

public class Same {
    public boolean checkSam(String stringA, String stringB) {
        // write code here
        if(sortString(stringA).equals(sortString(stringB))){
            return true;
        }
        return false;
    }

    public String sortString(String s){
        char[] a = s.toCharArray();
        Arrays.sort(a);
        return String.valueOf(a);
    }

}

4.空格替换
题目描述
请编写一个方法,将字符串中的空格全部替换为“%20”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成。

给定一个string iniString 为原始的串,以及串的长度 int len, 返回替换后的string。

测试样例:
“Mr John Smith”,13
返回:”Mr%20John%20Smith”
”Hello World”,12
返回:”Hello%20%20World”

解法:
利用String的replaceAll方法,直接替换。

import java.util.*;

public class Replacement {
    public String replaceSpace(String iniString, int length) {
        //replaceAll中的第一个参数也可以是正则表达式"\\s"
        return iniString.replaceAll(" ", "%20");

    }
}

5.基本字符压缩
题目描述
利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。

给定一个string iniString为待压缩的串(长度小于等于10000),保证串内字符均由大小写英文字母组成,返回一个string,为所求的压缩后或未变化的串。

测试样例
“aabcccccaaa”
返回:”a2b1c5a3”
“welcometonowcoderrrrr”
返回:”welcometonowcoderrrrr”

解答:
定义i和j作为指针,判断相邻位置上的字符是否相同,如果相同则num++;否则i指向j位置,并且将num和i加到临时的StringBuffer后,并且将num置为1。
比较压缩前后字符串的长度,返回长度较短的字符串。

import java.util.*;

public class Zipper {
    public String zipString(String iniString) {
        // write code here
        if(iniString.length()==0|iniString.length()==1|iniString.length()==2)
            return iniString;
        StringBuffer b = new StringBuffer(iniString.substring(0,1));
        int i = 0, j = 1;
        int num = 1;
        while(j < iniString.length()){
            if(iniString.charAt(i)==iniString.charAt(j)){
                num++;
            }
            else{
                i = j;
                b.append(num);
                b.append(iniString.charAt(i));
                num = 1;
            }
            j++;
        }
        b.append(num); //需要注意的地方,最后一个位置上的字符串的个数没有加进来
        if(b.length()>iniString.length()){
            return iniString;
        }
        return b.toString();
    }
}
面试看牛客,刷题看力扣?那我结合其二总结出的面试刷题手册何如?天下无敌也 程序员内部一直流传这一句话: 面试看牛客 刷题看力扣 牛客网作为国内最牛的程序员面试网站,一直在程序员内部颇负盛名,其中用户更是卧虎藏龙! 阅读详情

相关推荐

LeetCode,牛客面试必刷,看了这些,我把这几年大厂面试套路总结出来了!

前言 小编是一枚Android开发6年的老菜皮,面试必刷LeetCode,牛客,应该是所有程序员都了解的事情。但是你们有没有发现大厂面试出题,都有自己 特点的套路!!! 接下来我就给大家说说,我在刷牛客的时候,这么多年总结的一些经验! 一、BAT等大厂面试问题套路总结 我们先来看看各个大厂面试答题流程 阿里巴巴 腾讯 百度 小米 看上面的面试题,都是牛客网里随便搜的,我用红色圈出来的,都是大厂面试时,最喜欢问的Android知识点,几乎每家大厂必问! 面试,开始: 1.自我介绍 2.计算机网络

Android725的博客 1105

CM4-空格替换-【字符串】

一、题目描述 二、题解 class Replacement { public: string replaceSpace(string iniString, int length) {//形参为字符串变量,不是字符数组 string tmp; for(int i=0; i<length; i++){ if(iniString[i] == ' '){ tmp = tmp + "%20"; .

菜鸟学编程 459

飞常准小程序接口逆向分析:如何破解航班查询的签名机制

本文深度解析了飞常准小程序航班查询接口的安全机制,重点剖析了其基于MD5和参数排序的签名算法。通过逆向分析核心代码,详细阐述了签名生成流程,并提供了Python实现的签名生成器与调试技巧,为开发者理解与模拟此类接口调用提供了实战指南。

zz67890的博客 531

空格替换

请编写一个方法,将字符串中的空格全部替换为“%20”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成。 给定一个string iniString 为原始的串,以及串的长度 int len, 返回替换后的string。 测试样例: “Mr John Smith”,13 返回:”Mr%20John%20Smith”

coolwriter的博客 422

攻防实战之Confluence后利用

这边管理员密码是密文加密在数据库中,解不开,因此解决的思路是将管理员用户密码修改为已知明文密码的密文(这边不能直接在数据库中添加字段,关系型数据库在单表中添加一条字段可能会出现问题),登录上后台以后,添加用户并加入管理员组,最后将管理员密码还原。Confluence的后利用主要问题在于在Linux中搭建时,默认是Confluence用户权限,如下图所示,而confluence在linux中是没有写权限的,这也就是为什么有些人发现可以执行命令但是shell写不进去。至此admin的密码被改为了123123。

weixin_39251927的博客 2716

Linux服务器 离线安装oracle

Linux服务器 离线安装oracle

xie_bro的博客 4254

(每日一练C++)CC225 空格替换

描述 给定一个stringiniString及其长度 intlen, 已知该字符串中有空格,现要求编写程序将字符串中空格替换为“%20”。返回更改后的string。假设该字符串有足够的空间存放新增的字符,并且知道原字符的长度(小于等于1000),同时保证字符串由大小写的英文字母组成。 示例1 输入: "Mr John Smith",13 返回值: "Mr%20John%20Smith" 示例2 输入: "Hello World",12 返回值: "Hello%20%2...

weixin_39827856的博客 238

从零实现深度学习框架——理解正则化(一)

本文介绍解决过拟合与欠拟合的方法——正则化,主要介绍L1和L2正则化。

日积月累,天道酬勤 3393

字符串10:空格替换练习题

字符串10:空格替换练习题

小菜鸟也想飞的博客 591

第7章: MMU notifier在AMD GPU驱动中的应用

AMD GPU驱动利用MMU Interval Notifier机制实现共享虚拟内存(SVM)和异构内存管理(HMM)。通过分析AMDGPU内存架构(VRAM、GTT、Userptr)和Buffer Object设计,重点探讨了Userptr零拷贝机制如何依赖MMU notifier保持CPU/GPU内存一致性。HMM框架进一步实现统一地址空间和透明页面迁移,AMDGPU通过amdgpu_hmm.c实现两种invalidate回调(GFX和HSA模式),处理不同场景下的内存失效同步问题。

图形/计算GPU的驱动与虚拟化技术分享园地 2462

Android So加载机制分析----基于Android14源码

本文深入分析Android 14系统中SO(共享库)的两种加载机制:System.loadLibrary()和System.load()。前者通过ClassLoader查找标准路径加载,后者直接加载指定路径的SO文件。文档详细追踪了从Java层到动态链接器的完整加载链路,包括ClassLoader路径查找、JNI桥接、ART虚拟机处理以及底层linker的符号解析和重定位过程。同时还分析了Namespace隔离、JNI_OnLoad机制等核心内容,为开发者提供全面的SO加载技术解析和问题排查指南。

保持专注,保持热爱 349

Java编程题:空格替换(熟悉一下解题过程)

空格替换 请编写一个方法,将字符串中的空格全部替换为“%20”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成。 给定一个string iniString 为原始的串,以及串的长度 int len, 返回替换后的string。 测试样例: "Mr John Smith”,13 返回:“Mr%20John%20Smith” ...

长不大的大灰狼 663

RT-DETR改进策略【模型轻量化】| 替换骨干网络为EfficientNet v1 高效的移动倒置瓶颈结构

本文记录的是基于。采用了创新性的方法,通过精心平衡网络和来提升性能。本文将的设计优势融入RT-DETR中,提升RT-DETR的性能与效率,使其在目标检测任务中表现更为出色。本文配置了原模型中的共种不同大小的模型结构,以满足不同的需求。

Limiiiing的博客 531

程序员面试金典

偶然发现牛客网程序员面试金典在线编程题和学习算法经验:

ZCC的专栏 882

芒果YOLO11改进23:主干Backbone篇GhostNet:原创改进高效 GhostNet 网络,华为出品,打造全新检测器

主干Backbone篇GhostNet:原创改进高效 GhostNet 网络,华为出品,打造全新检测器

包括YOLOv5、YOLOv7、YOLOv8等模型改进 404

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

《程序员面试金典》题解

程序员面试金典-渐进式题解 本题解意在提供每道题目从小白能想到的方法,逐步到(近乎)最优方法,并且一一给出代码。欢迎讨论和指出错误。 1.1字符串 确定互异字符串 题目描述 请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。 给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符。保证字符...

weixin_34197488的博客 490

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

牛客网 | 程序员面试金典_编程题 | 原串翻转

方法一 class Reverse { public: string reverseString(string iniString) { reverse(iniString.begin(), iniString.end()); return iniString; } }; 方法二 class Reverse { public: strin...

李昊的博客 400

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

程序员面试金典1

1.第k个数(丑数) 剑指offer里有此题,但是其认为1为第一个丑数。 牛客网上此题认为1不为丑数,但是如果要正确计算的话,那么必须设置第一个丑数为1,那么求第k个数就转化为求第k+1个数 class KthNumber { public: int findKth(int k) { // write code here ...

121

最接近的数 牛客网 程序员面试金典 C++ Python

最接近的数 牛客网 程序员面试金典 C++ Python 题目描述 有一个正整数,请找出其二进制表示中1的个数相同、且大小最接近的那两个数。(一个略大,一个略小) 给定正整数int x,请返回一个vector,代表所求的两个数(小的在前)。保证答案存在。 测试样例: 2 返回:[1,4] C++...

dianwonin4433的博客 86

《程序员面试金典》确定两串乱序同构

【 声明:版权所有,转载请标明出处,请勿用于商业用途。  联系信箱:libin493073668@sina.com】 题目链接:http://www.nowcoder.com/practice/164929d4acd04de5b0ee2d93047b3b20?rp=1&ru=/ta/cracking-the-coding-interview&qru=/ta/cracking-

月下的寂寞肖邦 1007

牛客之程序员面试金典_ 编程题(二)

1.清除行列 题目描述 请编写一个算法,若N阶方阵中某个元素为0,则将其所在的行与列清零。 给定一个N阶方阵int[]”&gt;mat和矩阵的阶数n,请返回完成操作后的int[][]方阵(C++中为vector&gt;),保证n小于等于300,矩阵中的元素为int范围内。 测试样例: [[1,2,3],[0,1,2],[0,0,1]] 返回:[[0,0,3],[0,0,0],[0,0,...

JSJWR的博客 882

程序员面试金典——18.13 最大字母矩阵

程序员面试金典——18.13 最大字母矩阵 在牛客网上把此题的难度给大大降低了。。。。。。。。。 Solution1: 参考网址:https://www.nowcoder.com/questionTerminal/270ff3b150704f8795fd4a944a7e043a 原题比较复杂,牛客网上给简化为求某个单词出现次数和长度的最大值了 class AlphaMatrix { pu...

Allenlzcoder的博客 385

牛客支招 | 面试时,如何在线考核程序员代码能力?

随着远程办公技术的发展,“视频会议”已经广泛应用于大型企业的日常办公场景中,比如HR招聘场景。在面试前,候选人和面试官需要下载相应的APP。 然而,据一些IT互联网企业的HR反应:“视频会议”应对职能类、市场类、销售类等仅需要口头沟通的职位尚可,但也很难实现面试信息的现实流转,而对于以程序员为主的技术岗位,普通“视频会议”软件并不具备在线“代码考核”的功能。企业需要选择专业的在线面试工具,来满足大体量的技术类岗位招聘所需。 牛客网,是国内知名的面向IT、技术求职者的能力提升平台,以及面向企业数字化招

新一代数智化校园招聘引领者 2659

程序员面试金典——17.1无缓存交换

程序员面试金典——17.1无缓存交换 主要是利用异或性质~ 程序员面试金典——17.1无缓存交换 class Exchange { public: vector&lt;int&gt; exchangeAB(vector&lt;int&gt; AB) { // write code here if(AB.size() &lt;= 1) ...

Allenlzcoder的博客 296

程序员面试金典:双栈排序、二叉平衡检查、输出单层节点

学习并总结了牛客网上的《程序员面试经典》的部分算法题

热爱技术、喜欢学习、乐于分享 527

【刷题记录⑦】Java工程师丨字节面试真题(一)

另外这里不仅仅可以刷题,你想要的这里都会有,十分适合小白和初学者入门学习~1、算法篇(398题)面试必刷100题、算法入门、面试高频榜单2、数据结构篇(300题)都是非常经典的链表、树、堆、栈、队列、动态规划等3、语言篇(500题)C/C++、java、python入门算法练习4、SQL篇(82题)快速入门、SQL必知必会、SQL进阶挑战、面试真题5、大厂笔试真题字节跳动、美团、百度、腾讯…掌握经验不在惧怕面试!​。...............

陈橘又青的博客 1703
上一篇: Java基础之反射
下一篇: java线程池和volatitle关键字
小菜鸟要高飞
博客等级 码龄12年 14粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值