首页 > 编程语言 >每日OJ题_牛客_非对称之美_最长非回文字符串_C++_Java

每日OJ题_牛客_非对称之美_最长非回文字符串_C++_Java

时间:2024-10-17 23:22:23浏览次数:10  
标签:right Java OJ int 之美 flag str 回文 left

目录

牛客_非对称之美_最长非回文字符串

题目解析

C++代码

Java代码


牛客_非对称之美_最长非回文字符串

非对称之美 (nowcoder.com)


题目解析

找到规律就是最长非回文字符串(判断是否全同->0,否则是n-1(回文减去1)或n)。

C++代码

#include <iostream>
using namespace std;

int main()    // (判断是否全同->0,否则是n-1(回文减去1)或n)
{
    string str;
    cin >> str;
    int sz = str.size();
    bool flag = true;
    for(int i = 0; i < sz; ++i)
    {   
        if(str[i] != str[0]) // 判断是否全同
        {
            flag = false;
        }
    }
    if(flag)
    {
        cout << 0 << endl;
        return 0;
    }
    
    int left = 0, right = sz - 1;
    flag = true;    // 判断整个串是否是回文串
    while(left < right)
    {
        if(str[left] != str[right])
        {
            flag = false;
            break;
        }
        ++left;
        --right;
    }
    if(flag)
        cout << sz - 1<< endl;
    else
        cout << sz << endl;
    return 0;  
    /*
    string str;
    cin >> str;
    int sz = str.size(), res = 1;
    for(int i = 0; i < sz; ++i)
    {   
        int left = i, right = sz - 1;
        while(left < right)
        {
            if(str[left] != str[right])
                break;
            --right;
        }
        // cout << right - left + 1 << endl;
        res = max(res, right - left + 1);
    }
    cout << res;
    // eeeeemeeeee处理不了
    return 0;   
    */ 
}

Java代码

import java.util.*;
public class Main
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        char[] s = in.next().toCharArray();
        int n = s.length;
        boolean flag = false;
        for(int i = 1; i < n; i++)
        {
            if(s[i] != s[0])
            {
                flag = true;
                break;
            }
        }

        if(flag == true) // 不是相同的字符
        {
            flag = false;
            // 判断本⾝是不是回⽂
            int left = 0, right = n - 1;
            while(left < right)
            {
                if(s[left] == s[right])
                {
                    left++;
                    right--;
                }
                else
                {
                    flag = true;
                    break;
                }
            }
            if(flag == true)
                System.out.println(n);
            else
                System.out.println(n - 1);
        }
        else // 是相同字符
        {
            System.out.println(0);
        }
    }
}

标签:right,Java,OJ,int,之美,flag,str,回文,left
From: https://blog.csdn.net/GRrtx/article/details/143019388

相关文章

  • Java小白初探斗地主
    一、前言本人Java小白,一直想做一个斗地主游戏,正好最近学习到了集合。我们都知道集合分为(Collection(单列集合)家族和Map(双列/映射集合)家族)有着长度可变的特性,用来存储斗地主的卡牌再适合不过了。于是今天从下午五点多写到了晚上,主要是中间有几个地方把我卡住了很长时间。二、......
  • JavaScript初级课程 variables
    下载node。1.申明变量variables.jsletmessage="Hello!";message="World";console.log(message);nodevariables.js2.申明不会变的变量constCOLOR_GREEN="green";console.log(COLOR_GREEN)3.数据类型DataTypes=[number,BigInt,string......
  • Java之Lambda表达式详解
    一、Lambda表达式的概念与特点Lambda表达式是Java8引入的一个重要特性,它提供了一种简洁、优雅的方式来处理集合、过滤、映射等操作。Lambda表达式可以看做是匿名函数,它允许开发者以更简洁的方式声明匿名函数。Lambda表达式的基本语法由箭头指示符“->”表示,它将参数与函数......
  • 每日OJ题_牛客_连续子数组最大和_线性dp_C++_Java
    目录牛客_连续子数组最大和_线性dp题目解析C++代码Java代码牛客_连续子数组最大和_线性dp连续子数组最大和_牛客题霸_牛客网(nowcoder.com)描述:        给定一个长度为 n的数组,数组中的数为整数。请你选择一个非空连续子数组,使该子数组所有数之和尽可能大,......
  • java 第10天 String创建以及各类常用方法
    一.String创建的两种形式1.通过new的当时Stringstr=newString();2.不new的方式 Strings1="";二.new和不new的方式的区别是什么不new创建的字符串首先是拿着值去常量池中查找,是否有该内容,有就用常量池该字符串的地址,没有的话在常量池中创建并使用new的方式创建的字......
  • java学习10.17
    今天继续Java图形化页面的学习窗口的分别显示importjava.awt.;importjava.awt.event.;publicclass_1016{publicstaticvoidmain(String[]args){Frameframe=newFrame();frame.setBounds(500,500,300,300);frame.setAlwaysOnTop(true);//设置GridLay......
  • springboot+vue基于Java的高校学生请假系统【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景在信息化高速发展的今天,高校教育管理方式正逐步向智能化、便捷化转变。传统的学生请假流程,往往需要学生填写纸质申请表,经过辅导员、院系多级审批,过程繁琐且效率低下。此外,纸质记录也不利于信息的长期保存与查询,易导致信息丢失或管理混......
  • Java 一维数组作为函数参数
    //一维数组的引用#defineSIZE5voidinput(inta[],intlen);voidoutput(inta[],intlen);//函数的声明intmain(void){   inti=0;   intarr[SIZE]={86,85,85,896,45};//同理五个数据只是偶然,可能会更多   //输入   input(arr,SIZE);......
  • 详细介绍java中的锁机制
    Java中的锁机制是并发编程中用来确保多个线程在访问共享资源时不发生数据竞争的关键工具。Java提供了多种锁机制来帮助开发者管理线程同步,主要包括以下几种:1.synchronized锁synchronized是Java中最基本的锁机制,它可以用来修饰方法或者代码块,从而确保同一时间只有一个线程可以......
  • Java常用类和基础API
    目录一、String1.1String的理解1.1.1类的声明1.1.2内部声明的属性:1.2String的实例与连接1.2.1字符串常量的存储位置1.2.2 Strinq的不可变性的理解1.2.3String的连接操作:+1.3String的构造器与常用方法1.3.1常用方法1.4String的课后练习题目1题目2题目......