Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[编程题] DNA片段分析代码

[编程题] DNA片段分析代码

作者头像
desperate633
发布于 2018-08-22 08:16:55
发布于 2018-08-22 08:16:55
57200
代码可运行
举报
文章被收录于专栏:desperate633desperate633
运行总次数:0
代码可运行

来源:2017年校招全国统一模拟笔试(第五场)编程题集合

时间限制:1秒 空间限制:32768K

牛牛从生物科研工作者那里获得一段字符串数据s,牛牛需要帮助科研工作者从中找出最长的DNA序列。DNA序列指的是序列中只包括'A','T','C','G'。牛牛觉得这个问题太简单了,就把问题交给你来解决。 例如: s = "ABCBOATER"中包含最长的DNA片段是"AT",所以最长的长度是2。 输入描述: 输入包括一个字符串s,字符串长度length(1 ≤ length ≤ 50),字符串中只包括大写字母('A'~'Z')。

输出描述: 输出一个整数,表示最长的DNA片段

输入例子1: ABCBOATER

输出例子1: 2

分析

简单题。思路就是直接暴力搜索。从第一个字母开始判断,找到最长的,再从第二个字母开始。

代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import java.util.*;

public class Main {

    
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        
        String s = in.nextLine();
        
        in.close();
        
        System.out.println(helper(s));
    }
    
    
    private static int helper(String s) {
        
        String source = "ATGC";
        
        int res = 0;
        
        for(int i=0;i<s.length();i++) {
            
            
            if(source.indexOf(s.charAt(i) + "") != -1) {
                int index = i;
                index++;
                while(index < s.length() && source.indexOf(s.charAt(index) + "") != -1) {
                    index++;
                }
                if((index - i) > res)
                    res = index-i;
            }
            
            
        }
        
        return res;
        
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.07.27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
LeetCode 3. Longest Substring Without Repeating Characters题目分析
样例 例如,在"abcabcbb"中,其无重复字符的最长子字符串是"abc",其长度为 3。
desperate633
2018/08/22
3430
[编程题] 偶串分析代码
输出描述: 输出一个整数,表示删除之后能得到的最长偶串长度是多少。保证测试数据有非零解
desperate633
2018/08/22
2370
[编程题] 制造回文分析代码
我们知道回文串的话,就是前后相等,那么一个字符至少出现两次,除了一种情况,就是可以有一个字符只出现一次,就是这个字符在中间。 所以,我们的思路就是统计出现奇数次字符的个数,假设只出现一个奇数次字符,那么其他都是偶数次的,那么直接奇数次的放中间就行了,所以至少是一种,如果没出现更好,也是一种,如果出现两个奇数次字符,那么一个拿去放中间,另一个只能单独领出来作为一个回文串,所以至少要两种,如果出现三个奇数次字符,那么就至少要三种。所以问题就变成统计奇数次字符出现的个数
desperate633
2018/08/22
3740
面试必备:高频算法题汇总「图文解析 + 教学视频 + 范例代码」之 字符串处理+动态规划 合集!
秋招接近尾声,我总结了 牛客、WanAndroid 上,有关笔试面经的帖子中出现的算法题,结合往年考题写了这一系列文章,所有文章均与 LeetCode 进行核对、测试。欢迎食用
圆号本昊
2021/09/24
5650
面试必备:高频算法题汇总「图文解析 + 教学视频 + 范例代码」之 字符串处理+动态规划 合集!
京东2019春招Java工程师编程题题解
生成回文串 题目描述 对于一个字符串,从前开始读和从后开始读是一样的,我们就称这个字符串是回文串。 例如"ABCBA","AA","A"是回文串,而"ABCD","AAB"不是回文串。 牛牛特别喜欢回文串,他手中有一个字符串s,牛牛在思考能否从字符串中移除部分(0个或多个)字符使其变为回文串,并且牛牛认 为空串不是回文串。 牛牛发现移除的方案可能有很多种,希望你来帮他计算一下一共有多少种移除方案可以使s变为回文串,对于两种移除方案如果移除的字符依次构成的序列不一样就是不同的方法。 输入描述 输入包括一个字符
武培轩
2018/04/18
7460
[编程题] 彩色瓷砖分析代码
牛牛喜欢彩色的东西,尤其是彩色的瓷砖。牛牛的房间内铺有L块正方形瓷砖。每块砖的颜色有四种可能:红、绿、蓝、黄。给定一个字符串S, 如果S的第i个字符是'R', 'G', 'B'或'Y',那么第i块瓷砖的颜色就分别是红、绿、蓝或者黄。 牛牛决定换掉一些瓷砖的颜色,使得相邻两块瓷砖的颜色均不相同。请帮牛牛计算他最少需要换掉的瓷砖数量。
desperate633
2018/08/22
9560
LeetCode-392-判断子序列
你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。
benym
2022/07/14
3800
leetcode392. Is Subsequence
如何判断字符串s是否是字符串t的一个子序列。子序列是指s中的字母均按照相对位置存在于t中,比如"abc"是"ahbfdc"的一个子序列,但是"axc"就不是"ahbgdc"的一个子序列。
眯眯眼的猫头鹰
2019/03/13
3130
String - 58. Length of Last Word
Given a string, find the first non-repeating character in it and return it's index. If it doesn't exist, return -1.
ppxai
2020/09/23
3430
数组刷题<下>套路分析
一、双索引技术-对撞指针1.167. 两数之和 II - 输入有序数组2. 345. 反转字符串中的元音字母3.344. 反转字符串4.125. 验证回文串5.11. 盛最多水的容器二、双索引技术-滑动窗口1.209. 长度最小的子数组2.438. 找到字符串中所有字母异位词3.76. 最小覆盖子串
公众号guangcity
2019/09/20
6240
数组刷题<下>套路分析
LeetCode笔记:345. Reverse Vowels of a String
首先想到的一个思路是遍历字符串中每个字母,遇到元音字母就记录下字母和所在的位置。遍历完后,对着记录下来的元音字母,将字符串中的元音按照反序替换一遍就好了,这种做法也做出来了,但是结果非常耗时,花了200多ms。 后来想到了第二种方法,在字符串的头和尾都放一个指针进行遍历,两端向中间去遍历,当两端都遇到元音字母后,就对换。直到两个指针碰头为止。这个方法就快多了,同时优化一下检查是否是元音字母的方法,只需要几ms就搞定了。 需要注意的是题目中并没有说字符串是纯大写或者小写,所以大小写都要考虑,这个容易忽略。
Cloudox
2021/11/23
3280
【力扣刷题】5. 最长回文子串
根据回文串的定义,正着和反着读一样,那我们是不是把原来的字符串倒置了,然后找最长的公共子串就可以了。例如 S = "caba" ,S = "abac",最长公共子串是 "aba",所以原字符串的最长回文串就是 "aba"。
jayjay
2022/11/02
2450
【力扣刷题】5. 最长回文子串
罗马数字转整数(leetcode-13)
在代码实现上,可以往后看多一位,对比当前位与后一位的大小关系,从而确定当前位是加还是减法。当没有下一位时,做加法即可。
Vincent-yuan
2021/01/29
2270
leetcode刷题(3)——无重复字符的最长子串
输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2:
老马的编程之旅
2022/06/22
2110
一天一大 leet(判断子序列)难度:简单-Day20200727
你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。
前端小书童
2020/09/24
4280
一天一大 leet(判断子序列)难度:简单-Day20200727
每日一题《剑指offer》字符串篇之表示数值的字符串
请实现一个函数用来判断字符串str是否表示数值(包括科学计数法的数字,小数和整数)。
终有救赎
2023/11/20
2010
每日一题《剑指offer》字符串篇之表示数值的字符串
003. 无重复字符的最长子串 | Leetcode题解
题目要求连续, 我们考虑使用滑动窗口。而这道题就是窗口大小不固定的滑动窗口题目,然后让我们求满足条件的窗口大小的最大值,这是一种非常常见的滑动窗口题目。
苏南
2020/12/16
5740
003. 无重复字符的最长子串 | Leetcode题解
每日一刷《剑指offer》字符串篇之左旋转字符串
汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列  S ,请你把其循环左移 K 位后的序列输出。例如,字符序列 S = ”abcXYZdef” , 要求输出循环左移 3 位后的结果,即 “XYZdefabc”
终有救赎
2023/11/18
1920
每日一刷《剑指offer》字符串篇之左旋转字符串
LeetCode 11-15 题 详解 Java版 ( 万字 图文详解 LeetCode 算法题11-15 =====>>> <建议收藏>)
我们理一下思路,大小是由长度和高度决定,如果选 0 到 8 就保证了长度最长,此时大小是 0 号柱子的高度 1 乘以长度 8 。我们如果想面积更大怎么做呢,只能减小长度,增加高度。是左边的柱子向右移动变成 1 号柱子呢?还是右边的柱子向左移动变成 7 号柱子呢?当然是哪边的柱子短就改哪边的!只有这样,高度才有可能增加。
猫头虎
2024/04/07
1650
LeetCode 11-15 题 详解 Java版 ( 万字 图文详解 LeetCode 算法题11-15 =====>>> <建议收藏>)
【算法】几道常见的算法字符串算法题
谈到字符串问题,不得不提的就是 KMP 算法,它是用来解决字符串查找的问题,可以在一个字符串(S)中查找一个子串(W)出现的位置。KMP 算法把字符匹配的时间复杂度缩小到 O(m+n) ,而空间复杂度也只有O(m)。因为“暴力搜索”的方法会反复回溯主串,导致效率低下,而KMP算法可以利用已经部分匹配这个有效信息,保持主串上的指针不回溯,通过修改子串的指针,让模式串尽量地移动到有效的位置。
周三不加班
2019/09/04
9000
【算法】几道常见的算法字符串算法题
相关推荐
LeetCode 3. Longest Substring Without Repeating Characters题目分析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验