题目链接 大致题意为将某个子串进行翻转后,使得不包含相同字符的字符子串长度最长.只能翻转一次或零次. 设一个子串的状态为包含字符的二进制.如子串为$abacd$,则状态为$00000000000000001111$. 根据分析可以得到,一个子串和另一个子串如果没有交集,则两个串可以经过一次翻转合并在一起. 例如:$abcdefga$,串$ab$和串$fg$,可以通过翻转$cdefg$变成$abgfedca$. 所以如果枚举一个状态,再枚举这个状态的补集的子集.就可以得到合法的状态. 但是枚举子集…
题目链接:传送门 思路: 由于只能翻转一次子串,就相当于找出两个不连续的子串,把在后面的一个子串翻转过来,和第一个子串拼接. 因为题目仅要求子串中的字符不重复,所以字符的先后顺序无关,翻转的操作就相当于: 选出两个不连续的子串,且他们没有相同的字符,两个子串的长度之和就是答案的一种可能. 题目中反复强调,给出的字符串只有前20个字母[a, t],考虑到$2^{20} = 10^{6}, 2^{26} = 6*10^{7}$,显然在疯狂暗示:要用状压来做这题. 所以考虑二进制状压字符集合. 一个朴…
Substring Reverse Problem Two strings s and t of the same length are given. Determine whether it is possible to make t from s using exactly one reverse of some its substring. Input The first line contains the string s, and the second - the string t.…
CF1234F Yet Another Substring Reverse Description 给定一个字符串,可以任意翻转一个子串,求最终满足所有字符互不相同的子串的最大长度. 数据范围: \(n \le 10^6, \Sigma \le 20\) Solution 由于被翻转子串的选择是任意的,我们可以将最终的子串看作两个原串的前缀的后缀的拼合.由于题目的各种性质,我们只需要考虑所有子串构成的字符集的所有可能状态,而与位置无关. 而字符集的状态依然要求不能有重复字符,因此对于每一个位置的…
题目链接: https://codeforces.com/contest/1234/problem/F 题意: 给出一个只包含前20个小写字母的字符串,一次操作可以让一段字符颠倒顺序 最多一次这样的操作,让不出现相同字符的子串最长,求出最长长度 数据范围: $1\leq |S| \leq 1000 000$ 分析: 定义$dp[i]$代表,最多出现这些字符的连续串的最大长度 $i$是二进制状态枚举,某位有1,则可以出现这个字符 状态转移看代码 $ans=max(dp[i]+dp[1<<20-1…
原文:sqlserver 巧用REVERSE和SUBSTRING实现lastindexof select REVERSE(SUBSTRING(REVERSE(testFixtureNumber),0,CHARINDEX('-',REVERSE(testFixtureNumber)))) from eam_tooling 以上是核心代码,不多说~…
  isnull(aa,0)删除表数据: truncate table aaa 添加字段: ALTER TABLE table1 ADD col1 varchar(200) DEFAULT '2008-05-22' 修改字段名: alter table table1 rename column col1 to col2; 修改字段属性: alter table table1 alter column col1 varchar(200) not null; 修改默认值: alter table t…
   ----------------------首先介绍charindex函数-----------------------------                                                                                                                                                                                     …
Given a singly linked list, determine if it is a palindrome. Follow up: Could you do it in O(n) time and O(1) space? 这道题让我们判断一个链表是否为回文链表,LeetCode中关于回文串的题共有六道,除了这道,其他的五道为Palindrome Number 验证回文数字,Validate Palindrome 验证回文字符串,Palindrome Partitioning 拆分回文…
今天在数据库匹配数据的时候,发现一些数据存在别名,导致我的数据匹配不上.在这里记录分享一下 例如: 李钟硕 (Lee Jong Suk),这里我匹配的是 “李钟硕” 示例1: SELECT reverse(substring(reverse(Name) ,charindex('(',reverse(Name)) + 1 , len(Name)))  FROM T 示例2: SELECT reverse(stuff(reverse(Name), 1, charindex('(', reverse(…
 做如下替换: 将字符串asd#sdf#sdfsf中含# …# 形式的子串删除,写出sql语句   sql语句如下: UPDATE MM SET name =substring(name,0,CHARINDEX('#',name))+reverse(substring(reverse(name),0,CHARINDEX('#',reverse(name)))) WHERE name like '%#%#%' …
DECLARE @str AS VARCHAR(25)='123_234_567' select substring(@str,1,LEN(@str)-CHARINDEX('_',reverse(@str))) 输出 123_234 DECLARE @str AS VARCHAR(25)='123_234_567' select reverse(substring(reverse(@str),1,charindex('_',reverse(@str)) - 1)) 输出567…
-- ============================================= -- Author:      <maco_wang> -- Create date: <2011-01-21> -- Description: <将一个正整数分解为m个2的n次方的和> -- ============================================= Go --创建函数 CREATE function GetSumSequence(@num…
跟踪(Trace)常被我们用来检查性能问题.通常我们会有针对CPU.Duration.Reads的创建跟踪定义,这一类的脚本一般不会包含太多的事件和列,筛选条件也相对简单.假如某一天你使用GUI定义了一个包含大量事件和列的服务器端跟踪,点击运行后你直接把GUI关掉,而你却没有导出原始定义脚本.此时你想知道定义的筛选条件,或者定义的事件和列,甚至是希望另外创建一个相同的跟踪(你肯定不希望再次打开GUI设置繁琐的事件和列及筛选条件).其实只要跟踪定义在SQL Server内部创建之后,你可以通过查询…
) SET @str='AP-FQC-2014072300004' --获取指定字符第一次出现的位置 SELECT PATINDEX('%-%',@str) --返回:3 --获取指定字符第一次出现的位置之前的字符串 ,) --返回:AP --获取指定字符最后一次出现的位置 --返回:7 --获取指定字符第一次出现的位置与第二次出现的位置之间的字符 ,) --返回:FQC --获取指定字符最后出现的位置之后的所有字符串 , )) --返回:2014072300004…
1.如果你够懒,不想一步一步点路径,一步一步选择 2.如果你连单个备份数据库的存储过程都不想多执行,一般每还原一个需要修改数据库名 下面的脚本适合你: /********************************************** Description:This script help you restore database batch. Pay attention:You'd better name the database like databaseName+number…
filpath字段值:/DataFile/UpLoad/Logo/NoPhoto.jpg select filpath,REVERSE((SUBSTRING(REVERSE(FilPath),0,CHARINDEX('/',REVERSE(filpath)))))  from FileInfo 结果NoPhoto.jpg 1.SELECT REVERSE(filpath) FROM dbo.FileInfo 结果:gpj.otohPoN/ogoL/daoLpU/eliFataD/ 2.SELEC…
原文:SQL去掉小数点有效数字后的所有0 第一种方法 select cast(2.5000000000000   as  real) select cast(2   as  real) select cast(2.00000   as  real)     第二种方法 CREATE function [dbo].[ClearZero](@inValue varchar(50)) returns varchar(50) as begin declare @returnValue varchar(2…
-- SQL Server Split函数   -- Author:zc_0101    -- 说明:   -- 支持分割符多字节   -- 使用方法    -- Select * FROM DBO.F_SQLSERVER_SPLIT('1203401230105045','0')       -- select * from DBO.F_SQLSERVER_SPLIT('abc1234a12348991234','1234')    -- Select * from DBO.F_SQLSERV…
  1.Halcon的自我描述 Program Logic Ø Each program consists of a sequence of HALCON operators Ø The program can be structured into procedures Ø The sequence can be extended by using control operators like if, for, repeat, or while Ø The results of the oper…
CREATE   FUNCTION  F_SQLSERVER_SPLIT( @Long_str   varchar ( 8000 ), @split_str   varchar ( 100 ))     RETURNS    @tmp   TABLE (             ID           inT       IDENTITY   PRIMARY   KEY ,           short_str    varchar ( 8000 )     )     AS     BEG…
题目描述: 对于两个给定的字符串,给出他们的最长公共子串. 题目分析: 1,最长公共子串(LCS)实际上是最长公共子序列的一种特殊情况,相当于是求连续的最长子序列.我们今天先解决这个特殊情况,后续博文会探讨一般化的子序列问题: 2,对于本题,仍然可以通过穷举法来解,一个长度为n的字符串的连续非空子串共有n * (n + 1) / 2个(为什么?),我们可以选取其中较短的一个字符串来取样本子串依次检查.但是穷举法往往是我们在没有其他更好的办法时的最后选择,对于LCS我们先尝试用动态规划的知识来解决…
按照指定字符截取字符串,截取出300 业务需求:想比对图片中框线部分是否一致 第一步 从最后一个/截取到末尾 select top 1 reverse(substring(reverse(ProcessControlName),1,charindex('/',reverse(ProcessControlName)) - 1)) from ProcessPublish; --第二步 在第一步的基础上从最后一个.截取select RTRIM(LTRIM(reverse(substring(rever…
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[usp_CommonDataResourcePaged] ( @TableName varchar(500), ----要显示的表或多个表的连接 @FieldList varchar(5000) = '*', ----要显示的字段列表 @PageSize int = 20, ----每页显示的记录个数 @PageNumber int = 1, ----…
好久没有写有关SqlServer 数据库方面技术的文章了,正好今天遇到了一个问题,我就把这个当做一个练习记录下来.今天遇到一个麻烦事,详情如下:公司买了一个系统,在这个系统里面有一个“充值卡”的功能,但是充值卡的当前所剩下的金额已经被乱码了,看不出来真正的金额,而且,卖软件的那家公司把所有的Sql 函数和存储过程都加密了,没有办法看到. 怎么办?为了和公司的其他系统进行集成,于是,我就试试来写一个逆运算来还原当前“充值卡”的剩余金额,搞了一天终于搞出来了.其实这个东西不是很难,只是刚开始的时候什…
SQL如何取出一个字符串中最后一个特殊字符右边的字符,例如:10*20*300,怎样得到300? 使用reverse配合charindex来实现. reverse是把字符串倒置,然后通过charindex来获取倒置之后第一个*的位置,然后使用substring函数进行字符串截取,截取后再使用reverse倒置回来即可. 以下为例子 declare @str varchar(20) set @str = '10*20*300' select reverse(substring(reverse(@s…
例1 代码如下 复制代码 create function f_split(@SourceSql varchar(8000),@StrSeprate varchar(10))returns @temp table(a varchar(100))--实现split功能 的函数--date :2003-10-14as begin declare @i int set @SourceSql=rtrim(ltrim(@SourceSql)) set @i=charindex(@StrSeprate,@So…
Sql中想把小数点后多余的0去掉,怎么办? select 5000/10000.0 --想变成0.5select 5500/10000.0 --想变成0.55select 5550/10000.0 --想变成0.555select 5555/10000.0 --想变成0.5555 其结果分别为:0.5000000    0.5500000  0.5550000   0.5555000 一.如果想去掉数字5后面多余的0 ,需要转化一下: select CONVERT(FLOAT,5000/1000…
在SQL Server下想把数字(包括浮点型和整型)转换成字符串,保留数据原本的样子或者根据需要转换成另外指定的格式可能就不仅仅是一条CAST(XXXX AS NVARCHAR)这么简单的事情了. 无论是CAST或者CONVERT在转换FLOAT或者REAL类型成为字符串的时候都可能面临一个问题,就是最终的数据会编程科学记数法的形式出现在最终结果集中.而DECIMAL是没有遇到这个问题. 比如: DECLARE @FL AS FLOAT DECLARE @RL AS REAL ,) SET @F…
declare @str varchar(50) set @str='-'+'1-9-3-2'--前面加个'-'防止没有'-'出错 select REVERSE(SUBSTRING(REVERSE(@str),1,CHARINDEX('-',REVERSE(@str))-1))…